多源BFS之矩阵距离

news/2024/11/13 5:33:03/

多源BFS

173. 矩阵距离

给定一个 N行 M列的 01矩阵 A,A[i][j]与 A[k][l]之间的曼哈顿距离定义为dist(i,j,k,l)=|i−k|+|j−l|
输出一个 N行 M列的整数矩阵 B,其中: B[i][j]=min1≤x≤N,1≤y≤M,A[x][y]=1dist(i,j,x,y)

输入格式
第一行两个整数 N,M。
接下来一个 N行 M列的 01矩阵,数字之间没有空格。

输出格式
一个 N行 M列的矩阵 B,相邻两个整数之间用一个空格隔开。

数据范围
1≤N,M≤1000
输入样例:
3 4
0001
0011
0110
输出样例:
3 2 1 0
2 1 0 0
1 0 0 1
思路
全部位置为1的地方设置成dist=0,全部入队依次扩展。

#include<iostream>
#include<cstring>
#include<algorithm>#define x first
#define y secondusing namespace std;typedef pair<int,int> pii;
const int N = 1010, M = N*N;int n,m;
char g[N][N];
pii q[M];
int dist[N][N];void bfs(){memset(dist,-1,sizeof dist);int hh=0,tt=-1;//插个锚点,后面的操作中先加tt后赋值,少了tt=0,这个操作for(int i=0;i<n;i++){for(int j=0;j<m;j++){if(g[i][j]=='1'){dist[i][j]=0;q[++tt]={i,j};}}}int dx[4]={-1,0,1,0},dy[4]={0,1,0,-1};while(hh<=tt){pii t=q[hh++];for(int i=0;i<4;i++){int a=t.x+dx[i],b=t.y+dy[i];if(a<0||a>=n||b<0||b>=m) continue;if(dist[a][b]!=-1) continue;dist[a][b]=dist[t.x][t.y]+1;q[++tt]={a,b};}}}int main(){scanf("%d%d",&n,&m);for(int i=0;i<n;i++) scanf("%s",g[i]);bfs();for(int i=0;i<n;i++){for(int j=0;j<m;j++)printf("%d ",dist[i][j]);printf("\n");}return 0;
}

http://www.ppmy.cn/news/1524295.html

相关文章

状压DP

状压DP 对于数据范围n<20的可以考虑状压DP 1.蒙德里安的梦想 题目描述 求把 N M NM NM 的棋盘分割成若干个 12 的的长方形&#xff0c;有多少种方案。 例如当$ N2&#xff0c;M4$ 时&#xff0c;共有 5 种方案。当 N 2 &#xff0c; M 3 N2&#xff0c;M3 N2&…

echarts 显示中国地图以及省份

这里使用echarts 4.9的版本显示中国地图&#xff0c;因为5.X的版本已经把地图模块分离出去了 可以从这里下载全国地图数据或各身份的数据 https://github.com/apache/echarts/tree/master/test/data/map 完整代码示例&#xff1a;中国地图 <!DOCTYPE html> <html&g…

全国各地身份证号开头6位数字及地区对照表

具体请前往&#xff1a;全国各地身份证号开头6位数字-省市县/区对照表

设计模式】Listener模式和Visitor模式的区别

文章目录 前言一、介绍Listener模式Visitor模式 二、代码实现2.1 Listener模式的Java实现2.2Listener模式的Go实现2.3Visitor模式的Java实现2.4Visitor模式的Go实现 三、总结 前言 在软件设计中&#xff0c;设计模式是解决特定问题的通用解决方案。Listener模式和Visitor模式是…

STL-stack/queue/deque(容器适配器)

目录 ​编辑 STL-stack 150. 逆波兰表达式求值 stack queue std::stack deque 性能测试 结构 STL-stack 栈的压入、弹出序列_牛客题霸_牛客网输入两个整数序列&#xff0c;第一个序列表示栈的压入顺序&#xff0c;请判断第二个序列是否可能为该栈的弹出顺序。假。题目…

信息安全国内外现状及技术要求示例(R155/R156)

国际政策、 法规的现状与趋势 鉴于对交通安全、社会安全甚至国家安全的重要影响&#xff0c;汽车网络安全、数据安全得到各相关国家和地区的高度重视&#xff0c;纷纷出台相关法规、标准。 信息安全法规 R155 法规适用范围覆盖了乘用车及商用车&#xff0c;适用于 M 类、N 类…

原生 input 中的 “type=file“ 上传文件

目标&#xff1a;实现文件上传功能 原型图&#xff1a; HTML部分&#xff1a; <div class"invoice-item"><div class"invoice-title">增值税专用发票</div><div class"invoice-box"><el-form-item label"标准…

C语言数组指针--自学笔记

一维数组指针 int a[3] {1,2,3}; int *pa a; //pa是一个整形的指针&#xff0c;pa 指针跨一个int大小的地址 int (*paa)[3] a; //paa是一个数组行指针, paa指针跨一行&#xff0c;3个int大小的地址 //a[n] *(pan) 二维数组指针 int b[2…