奉上本地CE但洛谷MLE的蒟蒻代码:
#include<iostream>
#include<cstdio>
#include<string>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<ctime>
#include<queue>
#include<stack>
#include<map>
using namespace std;
long long a[185][185],b[185][185],n,m,x,y,dx[4]={-1,1,0,0},dy[4]={0,0,-1,1};
char num;
bool visited[185][185];
struct p{
int x,y,t;
};
p p1,p2,p3;
void bfs()
{
queue<p>q;
p1.x=x,p1.y=y;p1.t=0;
visited[x][y]=1;
q.push(p1);
while(!q.empty())
{
p2=q.front();
q.pop();
for(int i=0;i<4;i++)
{
p3.x=p2.x+dx[i],p3.y=p2.y+dy[i],p3.t=p2.t+1;
if(p3.x>=1&&p3.x<=n&&p3.y>=1&&p3.y<=m&&a[p3.x][p3.y]==0)
{
b[p3.x][p3.y]=p3.t;
q.push(p3);
visited[p3.x][p3.y]=1;
}
}
}
}
int main()
{
cin>>n>>m;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
cin>>num;
if(num=='1')
{
a[i][j]=1;
}else{
a[i][j]=0;
}
b[i][j]=a[i][j];
}
}
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
if(a[i][j]==1)
{
x=i,y=j;
bfs();
}
}
}
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
cout<<b[i][j]<<' ';
}
cout<<endl;
}
return 0;
}