求助
#include<bits/stdc++.h>
using namespace std;
struct node
{
int x;
int y;
}s;
int v[4][2]={{1,0},{0,-1},{-1,0},{0,1}},z[100][100];
int m,n,sum,vis[100][100];
char a[100][100];
queue<node> q;
void bfs(int sy,int sx)
{
s.x=sx;
s.y=sy;
q.push(s);
while(!q.empty())
{
s=q.front();
q.pop();
int fx=s.x,fy=s.y;
for(int i=0;i<4;++i)
{
int jx=fx+v[i][0],jy=fy+v[i][1];
if(jx>=0&&jx<n&&jy>=0&&jy<m&&vis[jx][jy]==0&&a[jx][jy]!='0')
{
s.x=jx;
s.y=jy;
q.push(s);
vis[jx][jy]=1;
}
}
}
return ;
}
int main()
{
cin>>n>>m;
for(int i=0;i<n;++i)
{
for(int j=0;j<m;++j)
{
cin>>a[i][j];
}
}
for(int i=0;i<n;++i)
{
for(int j=0;j<m;++j)
{
if(vis[i][j]==0&&a[i][j]!='0')
{
bfs(i,j);
vis[i][j]=1;
sum++;
}
}
}
cout<<sum;
return 0;
}