热门

最新

红包

立Flag

投票

同城

我的

发布
2401_88580288
2401_88580288
1 年前
true2401_88580288

#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;
}

CSDN App 扫码分享
分享
评论
点赞
打赏
  • 复制链接
  • 举报
下一条:
今天大家公司吃元宵了不~
立即登录