题解
2024-05-03 15:39:00
发布于:上海
33阅读
0回复
0点赞
#include<iostream>
#include<queue>
using namespace std;
const int N=1e3;
int n,m,s;
bool cell[N][N],vis[N][N];
struct node{
int x,y;
};
void bfs(int xx,int yy){
queue<node>q;
q.push({xx,yy});
while(!q.empty()){
int x=q.front().x,y=q.front().y;
q.pop();
vis[x][y]=1;
if(x-1>=0&&cell[x-1][y]&&!vis[x-1][y]){q.push({x-1,y});vis[x-1][y]=1;}
if(y-1>=0&&cell[x][y-1]&&!vis[x][y-1]){q.push({x,y-1});vis[x][y-1]=1;}
if(x+1<n&&cell[x+1][y]&&!vis[x+1][y]){q.push({x+1,y});vis[x+1][y]=1;}
if(y+1<m&&cell[x][y+1]&&!vis[x][y+1]){q.push({x,y+1});vis[x][y+1]=1;}
}
}
int main(){
cin>>n>>m;
char c;
for(int i=0;i<n;i++)for(int j=0;j<m;j++){
cin>>c;
cell[i][j]=c-48;
}
for(int i=0;i<n;i++)for(int j=0;j<m;j++){
if(!vis[i][j]&&cell[i][j]){bfs(i,j);s++;}
}
cout<<s<<endl;
return 0;
}
这里空空如也
有帮助,赞一个