0分求调
查看原帖
0分求调
1425102
clever_Android楼主2024/8/26 10:05
#include <bits/stdc++.h>
using namespace std;
struct node{
	int H,L;
};
char mp[105][105];
bool vis[105][105];
int n,m,s=0;
int f[4][2]={-1,0,0,1,1,0,0,-1};
void bfs(int x ,int y){
	queue<node> q;
	s++;
	vis[x][y]=1;
	node e;e.H=x;e.L=y;
	q.push(e);
	while(!q.empty()){
		node e=q.front(); q.pop();
		for(int i=1;i<=3;i++){
			int dx = e.H+f[i][0];
			int dy = e.L+f[i][1];
			if(dx<1 || dx>n||dy<1||dy>m){
				continue;
			}
			if(vis[dx][dy]==1){
				continue;
			}
			if(mp[dx][dy]!='0'){
				vis[dx][dy]=1;
				node d;d.H=dx;d.L=dy;
				q.push(d);
			}
		}
	}
}
int main(){
	
	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]){
				continue;
			}
			if(vis[i][j]==1){
				continue;
			}
			bfs(i,j);
		}
	}
	cout <<s;
	return 0;
}
2024/8/26 10:05
加载中...