84分求条
查看原帖
84分求条
932905
tan999999楼主2025/6/17 14:18
#include<bits/stdc++.h>
using namespace std;

int n,mapp[31][31];
const int fx[5]={0,1,0,-1,0};
const int fy[5]={0,0,1,0,-1};
queue<int> qy;
queue<int> qx;
void bfs(int x,int y){
	qx.push(x);
	qy.push(y);
	while(!qx.empty()){
		for(int i=1;i<=4;i++){
			int nx=fx[i]+qx.back();
			int ny=fy[i]+qy.back();
			if(mapp[nx][ny]==0&&nx<=n&&ny<=n&&nx>=1&&ny>=1){
				qx.push(nx);
				qy.push(ny);
				mapp[nx][ny]=2;
			}
		}
		qx.pop();
		qy.pop();
	}
}

int main(){
	//freopen(".in","r",stdin);
	//freopen(".out","w",stdout);
	cin>>n;
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			cin>>mapp[i][j];
		}
	}
	for(int i=1;i<=n;i++){
		if(mapp[i][1]!=2&&mapp[i][1]!=1){
			mapp[i][1]=2;
			bfs(i,1);
		}
	}
	for(int i=1;i<=n;i++){
		if(mapp[i][n]!=2&&mapp[i][n]!=1){
			mapp[i][n]=2;
			bfs(i,n);
		}
	}
	for(int j=1;j<=n;j++){
		if(mapp[1][j]!=2&&mapp[1][j]!=1){
			mapp[1][j]=2;
			bfs(1,j);
		}
	}
	for(int j=1;j<=n;j++){
		if(mapp[n][j]!=2&&mapp[n][j]!=1){
			mapp[n][j]=2;
			bfs(n,j);
		}
	}
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			cout<<2-mapp[i][j]<<" ";
		}
		cout<<endl;
	}
	return 0;
}
2025/6/17 14:18
加载中...