矩陣距離(多源BFS)

2021-10-18 17:26:30 字數 1278 閱讀 9338

題目描述

給定乙個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 之間的曼哈頓距離...