蒟蒻队列模拟BFS30分求助
查看原帖
蒟蒻队列模拟BFS30分求助
501768
江楠(boogiepop楼主2022/3/27 21:07
#include<bits/stdc++.h>
	using namespace std;
	int dx[4]={-1,0,1,0},dy[4]={0,1,0,-1};
int cube[100][100],num=0,n,m;
void bfs(int a,int b){
	int x,y,w,t,i;
	int h[1000][3];
	num++;cube[a][b]=0;
	t=0;w=1;h[1][1]=a;h[1][2]=b;
	do
		{
			t++;
			for(i=0;i<=3;i++){
			x=h[t][1]+dx[i];
			y=h[t][2]+dy[i];
		if(x>=0&&x<m&&y>=0&&y<n&&cube[x[y]!=0){
				w++;
				h[w][1]=x;
				h[w][2]=y;
				cube[x][y]=0;
				}
			}
	}while(t<w);
}
int main()
{	
	string s;
	scanf("%d%d\n",&n,&m);
	for(int i=0;i<=n-1;i++)
		for(int j=0;j<=m-1;j++)
			cube[i][j]=1;//³õʼ»¯
	for(int i=0;i<=n-1;i++){
		cin>>s;
		for(int j=0;j<=m-1;j++)
		if(s[j]=='0') cube[i][j]=0;
	}
		for(int i=0;i<=n-1;i++)
			for(int j=0;j<=m-1;j++)
				if(cube[i][j]!=0) bfs(i,j);
				
	cout<<num<<endl; 
	return 0;
}
2022/3/27 21:07
加载中...