#include
using namespace std;
const int maxnum = 100;
const int maxint = 999999;
void dijkstra(int n, int v, int *dist, int *prev, int c[maxnum][maxnum])
dist[v] = 0;
s[v] = 1;
// 依次將未放入s集合的結點中,取dist最小值的結點,放入結合s中
// 一旦s包含了所有v中頂點,dist就記錄了從源點到所有其他頂點之間的最短路徑長度
for(int i=2; i<=n; ++i)
que[tot] = v;
for(int i=tot; i>=1; --i)
if(i != 1)
cout << que[i] << " -> ";
else
cout << que[i] << endl;
}int main()
}dijkstra(n, 1, dist, prev, c);
// 最短路徑長度
cout << "源點到最後乙個頂點的最短路徑長度: " << dist[n] << endl;
// 路徑
cout << "源點到最後乙個頂點的路徑為: ";
searchpath(prev, 1, n);}5
71 2 10
1 4 30
1 5 100
2 3 50
3 5 10
4 3 20
4 5 60
輸出資料:
999999 10 999999 30 100
10 999999 50 999999 999999
999999 50 999999 20 10
30 999999 20 999999 60
100 999999 10 60 999999
源點到最後乙個頂點的最短路徑長度: 60
源點到最後乙個頂點的路徑為: 1 -> 4 -> 3 -> 5
迪傑斯特拉最短路徑
問題描述 在帶權有向圖g中,給定乙個源點v,求從v到g中的其餘各頂點的最短路徑問題,叫做單源點的最短路徑問題。在常用的單源點最短路徑演算法中,迪傑斯特拉演算法是最為常用的一種,是一種按照路徑長度遞增的次序產生最短路徑的演算法。在本題中,讀入乙個有向圖的帶權鄰接矩陣 即陣列表示 建立有向圖並按照以上描...
迪傑斯特拉模板出來了
includeusing namespace std const int maxx 105 const int inf 1000000 int map maxx maxx bool used maxx intdis maxx intmapsize void init int c for x 0 x ...
最短路徑 迪傑斯特拉演算法
例如,要求下圖v0到v8的最短路徑 所以我們可以找到這樣的一條最短路徑 下面是他的鄰接矩陣 偽 如下 define maxvex 9 define infinity 65535 typedef int patharc maxvex 用於儲存最短路徑下標的陣列 typedef int shortpat...