32分求条QAQ
查看原帖
32分求条QAQ
901005
DENGZIAO楼主2024/10/22 15:45
#include<bits/stdc++.h>
using namespace std;
int a[40][40];
bool vis[40][40];
int tx[4]={0,0,1,-1};
int ty[4]={1,-1,0,0};
int n,m;
struct node{
	int x;
	int y;
};
queue<node>q;

void bfs(int x,int y){
	int fx,fy;
	vis[x][y]=1;
	q.push((node){x,y});
	while(!q.empty()){
		vis[q.front().x][q.front().y]=1;
		for(int i=0;i<4;i++){
			fx=q.front().x+tx[i],fy=q.front().y+ty[i];
			if(!vis[fx][fy]&&fx>=0&&fx<=n&&fy>=0&&fy<=n&&a[fx][fy]!=1){
				q.push((node){fx,fy});
				
			}
		}
		q.pop();
	}
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			if(!vis[i][j]) a[i][j]=2;
			cout<<a[i][j]<<" ";
		}
		cout<<endl;
	}
}


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]) vis[i][j]=true;
		}
	}
	bfs(0,0);
	
	
	return 0;
}
2024/10/22 15:45
加载中...