```cpp
// 洛谷 1162 填涂颜色
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
const int maxn=50;
int q[maxn*maxn][maxn];
int map[maxn][maxn];
int n,head,tail;
int X[4]={-1,0,1,0};
int Y[4]={0,1,0,-1};
void bfs(int x,int y)
{
head=0,tail=1;
q[1][0]=x;
q[1][1]=y;
do{
head++;//出队
for(int i = 0; i < 4; ++i) {//四个方向搜
x = q[head][0] + X[i];
y = q[head][1] + Y[i];//更新由上面的点拓展出的点
if(x >= 1 && x <= n && y >= 1 && y <= n && map[x][y] == 0) {
tail++;//拓展出新的节点
q[tail][0] = x;//入队
q[tail][1] = y;
map[x][y]=2;
}
}
}while(head<tail);
}
int main()
{
int ok=1;
int cnt1,cnt2;
cin>>n;
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
cin>>map[i][j];
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
{
if(ok==1)
if(map[i][j]==1)
{
cnt1=i+1;cnt2=j+1;
ok=0;
}
}
map[cnt1][cnt2]=2;
bfs(cnt1,cnt2);
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
{
cout<<map[i][j]<<" ";if(j==n-1)cout<<endl;
}
return 0;
}
```
by Curtain @ 2017-08-12 17:13:01
非stl AC了
by Curtain @ 2017-08-12 17:13:40
难道说STL不能使用?我没有用STL,自己写的队列也会RE,蒙圈
by 黑嵐 @ 2018-04-10 11:22:46