求调
查看原帖
求调
463546
wanghx楼主2023/10/20 10:47

40分

//省略缺生源
const int dx[4]={1,-1,0,0};
const int dy[4]={0,0,1,-1};
struct node{
	int x,y;
};
int n,m,ans,mp[N][N];
bool vis[N][N];
bool pd(int x,int y){
	if(vis[x][y]==1||mp[x][y]==0) return 0;
	return 1;
} 
void bfs(int x,int y){
	node t={x,y};
	queue<node> q;
	q.push(t);
	while(q.size()){
		t=q.front();
		q.pop();
		vis[t.x][t.y]=1;
		for(int i=0;i<4;++i){
			int nx=t.x+dx[i],ny=t.y+dy[i];
			if(pd(nx,ny)){
				t.x=nx,t.y=ny;
				q.push(t);
			}
		}
	}
}
signed main(){
	n=read(),m=read();
	for(int i=1;i<=n;++i)
	  for(int j=1;j<=m;++j)
	    scanf("%1d",&mp[i][j]);
	for(int i=1;i<=n;++i)
	  for(int j=1;j<=m;++j)
		if(mp[i][j]&&!vis[i][j]){
//		  write(i),p_,write(j),ed;
		  bfs(i,j);
		  ++ans;
		}
	write(ans),ed;
	return 0;
} 
2023/10/20 10:47
加载中...