例如,要求下圖v0到v8的最短路徑
所以我們可以找到這樣的一條最短路徑
下面是他的鄰接矩陣:
偽**如下:
#define maxvex 9
#define infinity 65535
typedef int patharc[maxvex]; // 用於儲存最短路徑下標的陣列
typedef int shortpathtable[maxvex]; // 用於儲存到各點最短路徑的權值和
void shortestpath_dijkstar(mgraph g, int v0, patharc *p, shortpathtable *d)
(*d)[v0] = 0; // v0至v0的路徑為0
final[v0] = 1; // v0至v0不需要求路徑
// 開始主迴圈,每次求得v0到某個v頂點的最短路徑
for (v = 1; v < g.numvertexes; v++)
}final[k] = 1; // 將目前找到的最近的頂點置1
// 修正當前最短路徑及距離
for (w = 0; w < g.numvextexes; w++)}}}
最後的: d
0147
58101216p
0014
2436
7final11
1111111
迪傑斯特拉最短路徑演算法
時間限制 1 sec 記憶體限制 32 mb 提交 27 解決 17 提交 狀態 命題人 外部匯入 題目描述 在帶權有向圖g中,給定乙個源點v,求從v到g中的其餘各頂點的最短路徑問題,叫做單源點的最短路徑問題。在常用的單源點最短路徑演算法中,迪傑斯特拉演算法是最為常用的一種,是一種按照路徑長度遞增的...
最短路徑(迪傑斯特拉演算法)
源 include define maxint 32767 表示極大值 define mvnum 100 最大頂點數 typedef char vertextype 定義資料型別 typedef int arctype typedef struct amgraph int locatevex amg...
迪傑斯特拉最短路徑
問題描述 在帶權有向圖g中,給定乙個源點v,求從v到g中的其餘各頂點的最短路徑問題,叫做單源點的最短路徑問題。在常用的單源點最短路徑演算法中,迪傑斯特拉演算法是最為常用的一種,是一種按照路徑長度遞增的次序產生最短路徑的演算法。在本題中,讀入乙個有向圖的帶權鄰接矩陣 即陣列表示 建立有向圖並按照以上描...