題目描述
給定乙個n行m列的01矩陣a,a[i][j] 與 a[k][l] 之間的曼哈頓距離定義為:
dist(a[i][j],a[k][l])=|i−k|+|j−l|
輸出乙個n行m列的整數矩陣b,其中:
b[i][j]=min1≤x≤n,1≤y≤m,a[x][y]=1dist(a[i][j],a[x][y])
輸入格式
第一行兩個整數n,m。
接下來乙個n行m列的01矩陣,數字之間沒有空格。
輸出格式
乙個n行m列的矩陣b,相鄰兩個整數之間用乙個空格隔開。
資料範圍
1≤n,m≤1000
輸入樣例:
3
40001
0011
0110
輸出樣例:
321
0210
0100
1
思路:本題是求0的位置距離所有1的最短的曼哈頓距離。
求乙個點到多個起點的最短距離,可以給所有起點加乙個虛擬點(與起點距離為0),這樣就把題目轉化成求這個點到虛擬點的最短距離。
本題僅需把所有1節點入隊,並把距離置為0,轉化成跑單源bfs。
#include
#include
#include
#include
using
namespace std;
typedef
long
long ll;
const ll inf=
0x3f3f3f3f
;ll n,m;
struct node
;char mp[
1005][
1005];
ll dis[
1005][
1005];
ll dx[4]
=;ll dy[4]
=;queue q;
void
dfs())
;}}while
(!q.
empty()
));}
}}intmain()
return0;
}
矩陣距離 多源BFS
給定乙個n行m列的01矩陣a,a i j 與 a k l 之間的曼哈頓距離定義為 dist a i j a k l i k j l dist a i j a k l i k j l 輸出乙個n行m列的整數矩陣b,其中 b i j min1 x n,1 y m,a x y 1dist a i j a ...
AcWing 173 矩陣距離 多源bfs模板
acwing 173.矩陣距離 給定乙個n行m列的01矩陣a,a i j 與 a k l 之間的曼哈頓距離定義為 d is t a i j a k l i k j l dist a i j a k l i k j l dist a i j a k l i k j l 輸出乙個n行m列的整數矩陣b,其...
演算法競賽 多源BFS
多源bfs與單源bfs有什麼區別呢?如何解決多源bfs?多源bfs 多個起點 多個起點同時加入佇列!核心 在求解多源bfs問題時,同時將所有起點加入佇列即可!題目鏈結 173.矩陣距離 acwing題庫 給定乙個 nn 行 mm 列的 0101 矩陣 aa,a i j 與a k l 之間的曼哈頓距離...