样例4过不去
查看原帖
样例4过不去
677832
nrkz902楼主2024/3/5 16:25

采用的加一圈0再bfs标记的思路

#include <bits/stdc++.h>
using namespace std;
int n ;
const int N = 40;
int g[N][N];
bool st[N][N];
typedef pair<int , int> PII;
queue<PII> q;
int dx[] = {-1 , 0 , 1 , 0};
int dy[] = {0 , 1 , 0 , -1};

void bfs(int x, int y){
	q.push({x,y});
	
	while(q.size()){
		auto t = q.front();
		q.pop();
		for(int i = 0 ; i < 4 ; i++){
			int a = t.first + dx[i];
			int b = t.second + dy[i];
			
			if(a<0 || a>n+1 || b<0 || b>>n+1)
				continue;
			if(st[a][b] == 1)
				continue;
			st[a][b] = 1;
			q.push({a,b});			
		}
	}
}

int main(){
	cin>>n;

	for(int i = 1 ; i <= n ; i++)
		for(int j = 1 ; j <= n ; j++){
			cin>>g[i][j];
			if(g[i][j] == 1){
				st[i][j] = 1;
			}
		}
		
	bfs(0 , 0);
	
	for(int i = 1 ; i <= n ; i++){
		for(int j = 1 ; j <= n ; j++){
			if(st[i][j] == 0)
				g[i][j] = 2;
			cout<<g[i][j]<<" ";
		}
		cout<<endl;
	}	                         
	return 0;
}
 

样例4输入如下

20
0 0 0 0 1 1 1 0 0 0 0 1 1 1 0 0 0 0 0 0
0 0 0 0 1 0 1 0 0 0 0 1 0 1 0 0 0 0 0 0
0 0 0 0 1 0 1 0 0 0 0 1 0 1 0 0 0 0 0 0
0 0 0 0 1 0 1 0 0 0 0 1 0 1 0 0 0 0 0 0
0 0 0 0 1 0 1 0 0 0 0 1 0 1 0 0 0 0 0 0
0 0 0 0 1 0 1 0 0 0 0 1 0 1 0 0 0 0 0 0
1 1 1 1 1 0 1 1 1 1 1 1 0 1 0 0 0 0 0 0
1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0
1 1 1 1 1 1 1 1 1 0 0 0 0 1 1 1 1 1 1 1
0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1
0 0 0 0 0 0 0 0 1 0 1 1 1 1 0 0 0 1 1 1
0 0 0 0 0 0 0 0 1 0 1 0 0 1 0 1 1 1 0 0
0 0 0 0 0 0 0 0 1 0 1 0 0 1 0 1 0 0 0 0
0 0 0 0 0 0 0 0 1 0 1 0 0 1 0 1 0 0 0 0
0 0 0 0 0 0 0 0 1 0 1 0 0 1 0 1 1 1 1 1
0 0 0 0 0 0 0 0 1 0 1 0 0 1 0 0 0 0 0 1
0 0 0 0 0 0 0 0 1 0 1 0 0 1 0 1 1 1 1 1
0 0 0 0 0 0 0 0 1 0 1 0 0 1 0 1 0 0 0 0
0 0 0 0 0 0 0 0 1 0 1 0 0 1 0 1 0 0 0 0
0 0 0 0 0 0 0 0 1 1 1 0 0 1 1 1 0 0 0 0

标答输出如下

0 0 0 0 1 1 1 0 0 0 0 1 1 1 0 0 0 0 0 0 
0 0 0 0 1 2 1 0 0 0 0 1 2 1 0 0 0 0 0 0 
0 0 0 0 1 2 1 0 0 0 0 1 2 1 0 0 0 0 0 0 
0 0 0 0 1 2 1 0 0 0 0 1 2 1 0 0 0 0 0 0 
0 0 0 0 1 2 1 0 0 0 0 1 2 1 0 0 0 0 0 0 
0 0 0 0 1 2 1 0 0 0 0 1 2 1 0 0 0 0 0 0 
1 1 1 1 1 2 1 1 1 1 1 1 2 1 0 0 0 0 0 0 
1 2 2 2 2 2 2 2 2 2 2 2 2 1 0 0 0 0 0 0 
1 1 1 1 1 1 1 1 1 2 2 2 2 1 1 1 1 1 1 1 
0 0 0 0 0 0 0 0 1 2 2 2 2 2 2 2 2 2 2 1 
0 0 0 0 0 0 0 0 1 2 1 1 1 1 2 2 2 1 1 1 
0 0 0 0 0 0 0 0 1 2 1 0 0 1 2 1 1 1 0 0 
0 0 0 0 0 0 0 0 1 2 1 0 0 1 2 1 0 0 0 0 
0 0 0 0 0 0 0 0 1 2 1 0 0 1 2 1 0 0 0 0 
0 0 0 0 0 0 0 0 1 2 1 0 0 1 2 1 1 1 1 1 
0 0 0 0 0 0 0 0 1 2 1 0 0 1 2 2 2 2 2 1 
0 0 0 0 0 0 0 0 1 2 1 0 0 1 2 1 1 1 1 1 
0 0 0 0 0 0 0 0 1 2 1 0 0 1 2 1 0 0 0 0 
0 0 0 0 0 0 0 0 1 2 1 0 0 1 2 1 0 0 0 0 
0 0 0 0 0 0 0 0 1 1 1 0 0 1 1 1 0 0 0 0 

代码输出答案如下

0 0 0 0 1 1 1 0 0 0 0 1 1 1 0 0 0 0 0 0
0 0 0 0 1 2 1 0 0 0 0 1 2 1 0 0 0 0 0 0
0 0 0 0 1 2 1 0 0 0 0 1 2 1 0 0 0 0 0 0
0 0 0 0 1 2 1 0 0 0 0 1 2 1 0 0 0 0 0 0
0 0 0 0 1 2 1 0 0 0 0 1 2 1 0 0 0 0 0 0
0 0 0 0 1 2 1 0 0 0 0 1 2 1 0 0 0 0 0 0
1 1 1 1 1 2 1 1 1 1 1 1 2 1 0 0 0 0 0 0
1 2 2 2 2 2 2 2 2 2 2 2 2 1 0 0 0 0 0 0
1 1 1 1 1 1 1 1 1 2 2 2 2 1 1 1 1 1 1 1
0 0 0 0 0 0 0 0 1 2 2 2 2 2 2 2 2 2 2 1
0 0 0 0 0 0 0 0 1 2 1 1 1 1 2 2 2 1 1 1
0 0 0 0 0 0 0 0 1 2 1 0 0 1 2 1 1 1 0 0
0 0 0 0 0 0 0 0 1 2 1 0 0 1 2 1 0 0 0 0
0 0 0 0 0 0 0 0 1 2 1 0 0 1 2 1 0 0 0 0
0 0 0 0 0 0 0 0 1 2 1 0 0 1 2 1 1 1 1 1
0 0 0 0 0 0 0 0 1 2 1 0 0 1 2 2 2 2 2 1
0 0 0 0 0 0 0 0 1 2 1 0 0 1 2 1 1 1 1 1
0 0 0 0 0 0 0 0 1 2 1 0 0 1 2 1 0 0 0 0
0 0 0 0 0 0 0 0 1 2 1 0 0 1 2 1 0 0 0 0
0 0 0 0 0 0 0 0 1 1 1 0 0 1 1 1 0 0 0 0
2024/3/5 16:25
加载中...