using namespace std;
int n,m;
bool vis[505][505];
char mp[505][505];
int dx[4]={-1,0,1,0};
int dy[4]={0,1,0,-1};
struct Node{
	int x,y,step;
};
int bfs(int sx,int sy){
	queue<Node> q;
	Node t={sx,sy,1};
	q.push(t);
	vis[sx][sy]=1;
	while(!q.empty()){
         t=q.front();
         q.pop();
         for(int i=0;i<4;i++){
         	int xx=t.x+dx[i];
         	int yy=t.y+dy[i];
         	if(xx>=1&&xx<=n&&yy>=1&&yy<=m&&mp[xx][yy]!='0'){
         		q.push({xx,yy,t.step+1});
         		mp[xx][yy]='0';
			 }
		 }
	}
	return -1;
}

int main(){
	int cnt=0;
	cin>>n>>m;
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			cin>>mp[i][j];
		}
	}
    	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			if(mp[i][j]!='0'){
				bfs(i,j);
				cnt++;
			}
		}
	}
	cout<<cnt;
	return 0;
} 

0 条评论

目前还没有评论...