#include<bits/stdc++.h> using namespace std; int dx[4]={1,-1,0,0}, dy[4]={0,0,1,-1}; int bz[100][100]={1},num=0; char s[100][100],ch; bool vis[100][100]; int m,n; void bfs(int p,int q){ int x,y,t,w,i; int h[1000][3]; num++;bz[p][q]=0; t=0;w=1; h[1][1]=p; h[1][2]=q; vis[p][q]=true; while(t<w){ t++; for(int i=0; i<=3; i++){ x=h[t][1]+dx[i]; y=h[t][2]+dy[i]; if((x>=0)&&(x<m)&&(y>=0)&&(y<n)&&(bz[x][y]!=0)&&!vis[x][y]){ w++; h[w][1]=x; h[w][2]=y; bz[x][y]=0; vis[x][y]=true; } } } } int main() { cin>>m>>n; for(int i=0; i<=m-1; i++) for(int j=0; j<=n-1; j++) bz[i][j]=1; for(int i=0; i<=m-1; i++){ for(int j=0; j<=n-1; j++){ cin>>s[i][j]; if(s[i][j]=='0') bz[i][j]=0; } } for(int i=0; i<=m-1; i++) for(int j=0; j<=n-1; j++) if(bz[i][j]!=0&&!vis[i][j]) bfs(i,j); cout<<num<<endl; return 0; }
标签:int,细胞,bfs,vis,num,100,bz From: https://www.cnblogs.com/jck211303/p/17573718.html