最短路 路徑還原(dijkstra,模板)

2021-09-26 03:01:13 字數 889 閱讀 6155

b. wzy的大冒險——出發咯qaq

單點時限:2.0 sec

記憶體限制:512 mb

第一行兩個數n,m ,(1≤n≤103,1≤m≤103)

接下來m行,每行三個數x,y,z,表示點 x 與點 y 之間有一條權值為 z 的有向邊 (1≤x,y,z≤103).

第一行乙個整數表示 1 到 n 的最短距離;

第二行倒序輸出這條路徑。

input

5 7

1 2 69

1 3 87

1 4 79

2 5 94

2 3 10

3 5 79

4 5 43

output

122

5 4 1

#include using namespace std;

const int n = 1010;

const int inf = 0x3f3f3f3f;

int cost[n][n]; // 存圖

int used[n]; // 標記邊是否用過

int dis[n]; // 起點到其他點的最短距離

int prevs[n]; // 存最短路上每個點的前驅點

int n, m;

void djk(int s)

if(v == -1) break;

used[v] = 1;

for(int i=1; i <= n; i++)}}

}vectorget_path(int t) // 得到的最短路是逆序的

int main()

}return 0;

}

Dijkstra 最短路還原路徑

dijkstra鏈結 我們求最短路最常用的就是dijkstra演算法,然而我們在很多時候需要列印出這條最短的路徑,這時我們就要想乙個辦法來儲存路徑,這裡我們借助一點點類似於並查集的思想,就是用乙個path陣列來儲存從原點開始到達這個點的最短路徑的上一步,簡單來說就是我們從哪個點到的這個點,舉個例子吧...

Dijkstra 最短路徑

dijkstra 最短路徑 針對有向圖,不支援負權值 圖的相鄰矩陣表示方法,還要用到最小值堆 include include define unvisited 0 define visited 1 define infinite 9999 設定最大值 define n 5 定義圖的頂點數 using...

dijkstra最短路徑

hehe和xixi在乙個地方玩遊戲,xixi把n 1件禮物 hehe以前送給xixi的 分別藏在了另外n 1個地方,這些地方都能互相到達,且所有的邊都是有方向的。現在hehe要做的事就是去那些地方找回那n 1件禮物給xixi 由於每一件禮物都有特殊的意義,所以xixi要求hehe每找到一件禮物,就必...