dijkstra演算法實現

2021-07-10 12:40:02 字數 808 閱讀 6807

#include #include using namespace std;

const int maxnum = 100;

const int maxint = 999999;

// 各陣列都從下標1開始

int dist[maxnum]; // 表示當前點到源點的最短路徑長度

int prev[maxnum]; // 記錄當前點的前乙個結點

int c[maxnum][maxnum]; // 記錄圖的兩點間路徑長度

int n, line; // 圖的結點數和路徑數

void dijkstra(int n, int v)

//尋找起點

dist[v] = 0;

s[v] = 1;

// 依次將未放入s集合的結點中,取dist最小值的結點,放入結合s中

// 一旦s包含了所有v中頂點,dist就記錄了從源點到所有其他頂點之間的最短路徑長度

for(int i=2; i<=n; ++i)

int main()

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

dist[i] = maxint;

dijkstra(n, 1);

// 最短路徑長度

cout << "源點到最後乙個頂點的最短路徑長度: " << dist[n] << endl;

// 路徑

cout << "源點到最後乙個頂點的路徑為: ";

searchpath(prev, 1, n);

}

Dijkstra演算法的實現

dijkstra演算法的實現 讀入 dijkstratxt 中的部分網路資料 test.txt 弧段起點id,弧段終點id,弧段距離 用dijkstra演算法生成的最佳路徑再寫入 routetxt.txt 檔案中 include include include include using names...

Dijkstra演算法java實現

看到網上的dijkstra演算法寫的都好複雜,我自己就簡單的寫了乙個,例子為書上的例子。public class dijkstra 存放的為頂點所在陣列的id和頂點名稱 mapv new hashmap 不存放源點 v0 v.put 1,v1 v.put 2,v2 v.put 3,v3 v.put ...

Dijkstra演算法的實現

最近自學了dijkstra演算法,跟著自己的理解寫了個 想加深對dijkstra演算法的理解,如有不足,還請多多指教。首先,dijkstra演算法主要是適用於找兩點之間的最小權值之和。思路 開始的時候,假設有兩個集合 分別為a,b集合 a集合為空 用來存放使用過的點 b集合存放著圖中的各點 當然,在...