#include <bits/stdc++.h>using namespace std;char g[1005][1005];//描述地图int dist[1005][1005];//举例函数int dx[4] ={1,0,-1,0};//方向数组int dy[4]={0,1,0,-1};typedef pair<int,int> PII;queue <PII> q;int n,m;void bfs(){ while(!q.empty()){ PII t=q.front(); q.pop(); for(int i=0;i<4;i++){ int a=t.first+dx[i],b=t.second+dy[i]; if(a<1||a>n||b<1||b>m||dist[a][b]>=0||g[a][b]=='1') continue;//不符合重来 dist[a][b]=dist[t.first][t.second]+1; q.push({a,b}); } }}int main(){ memset(dist,-1,sizeof dist);//全设置为-1 cin>>n>>m; for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++) cin>>g[i][j];//输入字符串 } for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ if(g[i][j]=='1'){//等于1放入队列,距离为0 dist[i][j]=0; q.push({i,j}); } } } bfs(); for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ printf("%d ",dist[i][j]);//输出 } printf("\n"); } return 0;}