#include <bits/stdc++.h>
using namespace std;
int main()
{
int mtx[10][10]={0};
int n,spx,spy;
bool found=false;
cin>>n;
for(int i=0;i<n;i++)
for(int j=0;j<n;j++) {
cin>>mtx[i][j];
}
for(int i=0;i<n;i++) {
for(int j=0;j<n;j++) {
if(mtx[i][j]==0&&mtx[i+1][j]==1) {
int l=j;
int m=j;
bool lf=false;
bool rf=false;
while (l>=0) {
l--;
if (mtx[l][j]==1) {
lf=true;break;
}
}
while (m<n) {
m++;
if (mtx[m][j]==1) {
rf=true;break;
}
}
if (lf&&rf) {
spx=i; spy=j;
}
}
}
}
queue<pair<int,int>> q;
q.push(make_pair(spx,spy));
while(!q.empty()) {
pair<int,int> p=q.front();
//if (mtx[p.first][p.second]!=1) {
mtx[p.first][p.second]=2;
//}
int f=p.first;
int s=p.second;
int r[4][2]={{1,0},{-1,0},{0,1},{0,-1}};
for(int k=0;k<4;k++) {
if (mtx[f+r[k][0]][s+r[k][1]]==0&&f+r[k][0]>=0&&f+r[k][0]<n&&s+r[k][1]>=0&&s+r[k][1]<n) {
q.push(make_pair(f+r[k][0],s+r[k][1]));
}
}
q.pop();
}
for(int i=0;i<n;i++) {
for(int j=0;j<n;j++) {
cout<<mtx[i][j]<<" ";
}
cout<<endl;
}
return 0;
}
第四个测试点RE...?
第五个测试点TLE...???