题目网址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;
}