10分求助!
查看原帖
10分求助!
391857
xhb123456楼主2021/10/6 14:36
#include<bits/stdc++.h>
using namespace std;
int n,m,a[103][103],ans=0;
int d1[4]={1,-1,0,0};
int d2[4]={0,0,1,-1};
struct sdf{
	int x,y;
}q[10008];
void bfs(int x,int y){
	ans++;
	int h=0,t=1;
	q[1].x=x;
	q[1].y=y;
	a[x][y]=0;
	while(h<t){
		h++;
		for(int w=0;w<=3;w++){
			int nx=q[h].x+d1[w];
			int ny=q[h].y+d2[w];
			if(a[nx][ny]!=0){
				a[nx][ny]=0;
				t++;
				q[t].x=nx;q[t].y=ny;
			}	
		}
	}	
}
int main(){
	ios::sync_with_stdio(0);cin.tie(0);
	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(a[i][j]!=0)
				bfs(i,j);
		}
	cout<<ans;
	return 0;
}

2021/10/6 14:36
加载中...