0
点赞
收藏
分享

微信扫一扫

POJ 2386(dfs+染色)

程序员阿狸 2022-03-15 阅读 25
#include<iostream>
#include<cstdlib>
#include<sstream>
#include<cstdio>
#include<stack>
#include<cstdio>
#include<map>
#include<set>
#include<queue>
#include<cstring>
#include<cmath>
#include<vector>
#include<math.h>
#include<algorithm>
#include<utility>
#define REP(i,a,b) for(int i=a;i<b;i++)
#define REPP(i,a,b) for(int i=a;i<=b;i++)
#define inf 0x3f3f3f3f
using namespace std;
typedef long long ll;
const int maxn=100;
char field[maxn+5][maxn+5];
//int dx[4]={0,-1,0,1};//左上右下
//int dy[4]={-1,0,1,0};//左上右下
int n,m;
void dfs(int x,int y)
{
    field[x][y]='.';
    for(int dx=-1;dx<=1;dx++)
    {
        for(int dy=-1;dy<=1;dy++)
        {
            int nx=x+dx;
            int ny=y+dy;
            if(nx>=0 && nx<=n && ny>=0 && ny<=m && field[nx][ny]=='W')
                dfs(nx,ny);
        }
    }
    return;
}
void solve()
{
    int res=0;
    REP(i,0,n)
    {
        REP(j,0,m)
        {
            if(field[i][j]=='W')
            {
                dfs(i,j); res++;
            }
        }
    }
    printf("%d\n",res);
}
int main()
{
    while(scanf("%d%d",&n,&m)==2)
    {
        REP(i,0,n)
        {
            REP(j,0,m)
            {
                scanf("%c",&field[i][j]);
            }
            getchar();
        }
        solve();
    }
    return 0;
}
举报

相关推荐

0 条评论