84分!求助!
查看原帖
84分!求助!
939055
darkness_forest楼主2023/12/1 18:31
using namespace std;
struct node{
	int x,y;
};
int a[50][50],n,dx[]={-1,0,1,0},dy[]={0,1,0,-1};
bool st[50][50];
int bfs(int sx,int sy){
	int v=0,h[1600],f[1600];
	bool flag=0;
	st[sx][sy]=1;
	node s;
	queue<node> q;
	s.x=sx; s.y=sy;
	q.push(s);
	while(!q.empty()){
		node t=q.front();
		q.pop();
		for(int i=1;i<=3;i++){
			node u;
			u.x=t.x+dx[i]; u.y=t.y+dy[i];
			if(st[u.x][u.y]==1||a[u.x][u.y]==1) continue;
			if(u.x>n||u.x<1||u.y>n||u.y<1){
				flag=1;
				return 0;
			}
			v++,h[v]=u.x,f[v]=u.y;
			st[u.x][u.y]=1;
			q.push(u);
		}
	}
	if(flag==0){
		a[sx][sy]=2; 
	    for(int i=1;i<=v;i++) a[h[i]][f[i]]=2;
	}
	return 0;
}
int main(){
	cin>>n;
	for(int i=1;i<=n;i++)
	    for(int j=1;j<=n;j++){
	    	cin>>a[i][j];
	    	if(a[i][j]==1) st[i][j]=1;
		}
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			if(st[i][j]==0) bfs(i,j);
		}
	}
	cout<<endl;
	for(int i=1;i<=n;i++){
	    for(int j=1;j<=n;j++){
	    	cout<<a[i][j]<<" ";
	    }
	    cout<<endl;
	}
	return 0;
}
2023/12/1 18:31
加载中...