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 7output1 2 69
1 3 87
1 4 79
2 5 94
2 3 10
3 5 79
4 5 43
1225 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每找到一件禮物,就必...