#include <stdio.h>
#include <string.h>
typedef struct {
int x,y;
}place;
place queue[10000];
int visited[10000][10000];
int dis[10000][10000];
int rear=0,front=0;
int dx[4]={0,0,1,-1};
int dy[4]={-1,1,0,0};
int n,m;
void bfs(){
for(front=0;front<=rear;front++){
int curx=queue[front].x;
int cury=queue[front].y;
for(int d=0;d<4;d++){
int newdx=curx+dx[d];
int newdy=cury+dy[d];
if(newdx>=0&&newdx<n&&newdy>=0&&newdy<m&&visited[newdx][newdy]==0){
dis[newdx][newdy]=dis[curx][cury]+1;
visited[newdx][newdy]=1;
queue[rear].x=newdx;
queue[rear++].y=newdy;
}
}
}
}
int main(){
scanf("%d %d",&n,&m);
for(int i=0;i<n;i++){
char str[100];
scanf("%s",str);
for(int k=0;k<m;k++){
if(str[k]=='1'){
visited[i][k]=1;
queue[rear].x=i;
queue[rear++].y=k;
}//访问过
}
}
bfs();
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
printf("%d ",dis[i][j]);
printf("\n");
}
}
为什么会报段错误?