![测试点二]()
![测试点二的结果]()
![测试点六]()
```c
#include<stdio.h>
int n;
int g[33][33];
int dir[4][2]={{0,1},{0,-1},{1,0},{-1,0}};
void bfs(){
for(int x=0;x<n;x++)
for(int y=0;y<n;y++){
if(!g[x][y]){
int nx,ny,flag=0;
for(int k=0;k<4;k++){
nx=x,ny=y;
while(nx>=0&&ny>=0&&nx<n&&ny<n){
nx+=dir[k][0];
ny+=dir[k][1];
if(g[nx][ny]>0){
flag++;
break;
}
}
if(flag==0)break;
}
if(flag==4)g[x][y]=2;
}
}
}
int main(){
scanf("%d",&n);
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
scanf("%d",&g[i][j]);
bfs();
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
printf("%d ",g[i][j]);
}
printf("\n");
}
return 0;
}