90分求助
查看原帖
90分求助
422009
America楼主2022/7/21 22:07

题目网址https://www.luogu.com.cn/problem/P1596

提交记录https://www.luogu.com.cn/record/80618552

代码

#include<bits/stdc++.h>
using namespace std;
int n,m,a[101][101],ans,bfs[10100][3],head,tail;
int fx[9]={0,1,1,1,-1,-1,-1,0,0};
int fy[9]={0,-1,0,1,-1,0,1,-1,1};
char c;
void dfs(int x,int y)
{
    bfs[1][1]=x;
    bfs[1][2]=y;
    a[x][y]=0;
    head=tail=1;
    while(head<=tail)
    {
        for(int i=1;i<=8;i++)
        {
            int xx=bfs[head][1]+fx[i],yy=bfs[head][2]+fy[i];
            if(a[xx][yy])
            {
                a[xx][yy]=0;
                tail++;
                bfs[tail][1]=xx;
                bfs[tail][2]=yy;
            }
        }
        head++;
    }
}
int main()
{
    cin>>n>>m;
    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=m;j++)
        {
            cin>>c;
            if(c=='W')
            {
                a[i][j]=1;
            }
        }
    }
    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=m;j++)
        {
            if(a[i][j])
            {
                ans++;
                dfs(i,j);
            }
        }
    }
    cout<<ans;
    return 0;
}
2022/7/21 22:07
加载中...