#include<bits/stdc++.h>
using namespace std;
int a[100][100];
int dis[100][100],vis[100][100];
int n,m;
struct xxx
{
int x,y;
};
void bfs(xxx x)
{
queue<xxx>q;
q.push(x);
dis[x.x][x.y]=1;
vis[x.x][x.y]=0;
while(!q.empty())
{
xxx now=q.front();
if(a[now.x][now.y]==0)
{
cout<<dis[now.x][now.y]<<" ";
return ;
}
q.pop();
int dx[4]={0,0,1,-1};
int dy[4]={1,-1,0,0};
for(int i=0;i<4;i++)
{
int tx=now.x+dx[i];
int ty=now.y+dy[i];
if(tx>0&&ty>0&&tx<n&&ty<m&&vis[tx][ty]==0)
{
dis[tx][ty]++;
xxx tmp;
tmp.x=tx;
tmp.y=ty;
q.push(tmp);
}
}
}
}
int main()
{
cin>>n>>m;
xxx tmp;
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{
cin>>a[i][j];
}
}
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{
if(a[i][j]==0)
{
cout<<"0 ";
}
if(a[i][j]==1)
{
memset(dis,0,sizeof(dis));
memset(vis,0,sizeof(vis));
tmp.x=i;
tmp.y=j;
bfs(tmp);
}
}
cout<<endl;
}
return 0;
}
该代码样例输入后的输出
0 0 0
0 1 0
2 2 1
此贴禁止类似于傲梦编程的无意义回复,谢谢您的配合