题目链接:https://www.luogu.com.cn/record/31010382
#include<bits/stdc++.h>
using namespace std;
int dir[4][2]={{-1,0},{0,-1},{1,0},{0,1}};
int a[35][35];
struct node{int x,y;};
int n;
void bfs(int dx,int dy){
queue<node>q;
node start,next;
start.x=dx;
start.y=dy;
q.push(start);//把开始的坐标入队
while(!q.empty()){
start=q.front();
q.pop();
for(int i=0;i<4;i++){
next.x=start.x+dir[i][0];
next.y=start.y+dir[i][1];
if(next.x>=0&&next.x<=n+1&&next.y>=0&&next.y<=n+1&&a[next.x][next.y]==0){
a[next.x][next.y]=-1;
q.push(next);
}
}
}
}
int main(){
cin>>n;
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
cin>>a[i][j];
bfs(0,0);
//cout<<"n:"<<n<<endl;
//cout<<endl;
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
if(a[i][j]==-1)
cout<<"0 ";
else if(a[i][j]==1)
cout<<"1 ";
else
cout<<"2 ";
}
cout<<endl;
}
return 0;
}