生命体个数(T19373.细胞) 题解
2024-08-07 15:54:12
发布于:广东
#include<bits/stdc++.h>
using namespace std;
struct dada{
int x,y;
};
char a[5010][5010];
int dx[4]={-1,1,0,0},dy[4]={0,0,-1,1},v[5010][5010],n,m,ans;
void f(int x,int y){
queue<dada>q;
q.push({x,y});
v[x][y]=1;
while(q.size()){
dada top=q.front();
q.pop();
for(int i=0,cx=top.x,cy=top.y;i<4;i++){
int nx=cx+dx[i],ny=cy+dy[i];
if(cx+dx[i]>n||cx+dx[i]<1||cy+dy[i]>m||cy+dy[i]<1||v[cx+dx[i]][cy+dy[i]]||a[cx+dx[i]][cy+dy[i]]=='0')continue;
q.push({nx,ny});
v[nx][ny]=1;
}
}ans++;
}
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++)for(int j=1;j<=m;j++)cin>>a[i][j];
for(int i=1;i<=n;i++)for(int j=1;j<=m;j++)if(!v[i][j]&&a[i][j]!='0')f(i,j);
cout<<ans;
return 0;
}
这里空空如也
有帮助,赞一个