代码
#include<bits/stdc++.h>
using namespace std;
typedef pair<int,int> PII;
int st[1000010];
int g[1010][1010];
queue<PII> q;
void dfs(int x,int y)
{
q.push(make_pair(x,y));
g[x][y]=0;
while(q.size())
{
PII t=q.front();
q.pop();
int x1=t.first;
int y1=t.second;
for(int i=-1;i<=1;i++)
{
for(int j=-1;j<=1;j++)
{
if(g[x1+i][y1+j]==1)
{
q.push(make_pair(x1+i,y1+j));
g[x1+i][y1+j]=0;
}
}
}
}
}
int main()
{
int n,m;
cin>>n>>m;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
char c;
cin>>c;
if(c=='W')
{
g[i][j]=1;
}
}
}
int ans=0;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
if(g[i][j])
{
ans++;
dfs(i,j);
}
}
}
cout<<ans;
}
核心
广度优先搜索