总是有一个 1 被替换为 2 ,这是为什么?
#include<bits/stdc++.h>
using namespace std;
int n,m[35][35],vis[35][35]={0},a[35][35];
int ne[4][2]={{1,0},{0,1},{-1,0},{0,-1}};
void bfs(int x,int y)
{
queue<int> q;
q.push(x);
q.push(y);
vis[x][y]=1;
m[x][y]=2;
int u,v;
while(!q.empty())
{
u=q.front();
q.pop();
v=q.front();
q.pop();
m[u][v]=2;
for(int i = 0;i<=3;i++)
{
int a=u+ne[i][0];
int b=v+ne[i][1];
if(a>=1&&a<=n&&b>=1&&b<=n&&vis[a][b]==0&&m[a][b]==0)
{
q.push(a);
q.push(b);
vis[a][b]=1;
}
}
}
}
int main()
{
scanf("%d",&n);
for(int i = 1;i<=n;i++)
for(int j = 1;j<=n;j++)
{
cin>>m[i][j];
}
for(int i = 1;i<=n;i++)
for(int j = 1;j<=n;j++)
{
if(m[i][j]==1)
{
bfs(i+1,j+1);
break;
}
}
for(int i = 1;i<=n;i++)
{
for(int j = 1;j<=n;j++)
{
cout<<m[i][j]<<" ";
}
cout<<endl;
}
return 0;
}