Dijkstra演算法 單源最短路徑(包括路徑記錄)

2021-07-25 04:27:01 字數 1088 閱讀 4907

#include

#include

using namespace std;

#define max 999

#define big 101

int a[big][big];

int dist[big]; //儲存起點到其他點的最短路徑

int book[big]; //標記陣列

int path[big];

stackpathout;

void output_path(int end)

cout << "前進路徑為:";

while (!pathout.empty())

pathout.pop();               // 移除棧頂

}cout << endl;

}void dijkstra(int sta, int end, int m,int n)  //dijkstra 核心**}/

book[min_i] = 1;

for (int i = 1; i <=m; i++) //鬆弛 }}

}}int main()

else}//

int x, y, z;

cout << "輸入街道的資訊:" << endl;

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

int sta;

int end;

cout << "輸入出發地點與目的地:" << endl;

cin >> sta >> end;

///int min_i = max;

for (int i = 1; i <= m; i++)

path[min_i] = sta;

book[sta] = 1;

//dijkstra(sta, end,m,n);

//cout << "出發地點到目的地的最短距離為:" << dist[end] << endl;

output_path(end);

}cout << "是否繼續查詢? y or n : ";

char c;

cin >> c;

if (c == 'n' || c == 'n')}}

單源最短路 Dijkstra演算法

前提 沒有負邊 如果有負邊,可以用此方法檢查是否有負圈 const max v max v 表示邊的權重值 d max v 儲存從起點到每個點的總權重值 bool used max v 表示當前點是否已經訪問完畢 思想 找到乙個已經確定最短距離的點,更新跟它相鄰的點,之後這個點就不用關心了。起點最短...

單源最短路演算法 Dijkstra

dijkstra演算法是單源最短路演算法,可以求解不帶負權邊的圖中,從源點s到其它所有點的最短路。時間複雜度近似o n 2 可以用堆優化。一般用鄰接表,也可用鄰接矩陣。在稠密圖上會有較好的效能表現。include include using namespace std int s,t,n,m,las...

單源最短路 Dijkstra演算法

本文 自王陸的文字,僅作學習使用。dijkstra 迪傑斯特拉 演算法是典型的單源最短路徑演算法,用於計算乙個節點到其他所有節點的最短路徑。主要特點是以起始點為中心向外層層擴充套件,直到擴充套件到終點為止。問題描述 在無向圖 g v,e 中,假設每條邊 e i 的長度為 w i 找到由頂點 v0 到...