24 分那位大佬可以求助一下
  • 板块P2802 回家
  • 楼主20100518hyc
  • 当前回复3
  • 已保存回复3
  • 发布时间2023/8/21 19:47
  • 上次更新2023/11/3 02:09:37
查看原帖
24 分那位大佬可以求助一下
915357
20100518hyc楼主2023/8/21 19:47
#include<bits/stdc++.h>
using namespace std;
int n,m,sum;
int a[1005][1005],b[1005][1005];
struct ndeo {
	int x,y;
} c[100000];
int h,t;
int w[4][2]= {{0,1},{1,0},{0,-1},{-1,0}};
void bfs(int x,int y) {
	h=1,t=1;
	c[1].x=x,c[1].y=y;
	b[x][y]=1;
	while(h<=t) {
		for(int i=0; i<4; i++) {
			int xx=c[h].x+w[i][0];
			int yy=c[h].y+w[i][1];
			if(xx<1||xx>n||yy<1||yy>m) continue;
			if(a[xx][yy]&&!b[xx][yy]) {
				t++;
				c[t].x=xx;
				c[t].y=yy;
				b[xx][yy]=1;
			}
		}
		h++;
	}
}
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(a[i][j]||b[i][j]) {
				sum++;
				bfs(i,j);

			} else {
				cout<<-1;
			}
		}

	}
	cout<<sum;
	return 0;
}
2023/8/21 19:47
加载中...