Dijkstra演算法解最短路

2021-10-05 19:54:08 字數 931 閱讀 5704

第一行輸入兩個數表示n個地點和m條路徑,接下來m行中每行三個數a b c,分別表示地點編號和花費時間(權重),輸入0 0 時程式結束。輸出每種情況的最小時間。

這道題沒有出現負權,尋找最短路徑時選擇dijkstra演算法

#include

using

namespace std;

#define n 102

#define inf 1000000000

//無窮

int graph[n]

[n];

//鄰接矩陣

intmain()

}for

(i=0

;i)for

(i=1

;i) dis[i]

=graph[0]

[i];

memset

(flag,0,

sizeof

(flag));

dis[0]

=0; flag[0]

=1;for

(i=0

;i1;i++)}

if(a==-1

)break

;//找不到路徑

if(a==n-1)

break

;//找到路徑了

flag[a]=1

;//更新相鄰結點的標號值

for(j=

1;jif(dis[n-1]

>=inf) cout<<

"impossible"

<<

"\n"

;else cout<<<

"\n";}

return0;

}

211

2333

3125

2353

1220

0

最短路 Dijkstra演算法

dijksitra演算法求最短路僅僅適用於不存在右邊是負權的情況 bellman ford演算法沒有這乙個限制 主要特點是從起點為中心向外層層擴充套件,直到擴充套件到終點為止。即乙個最短路路徑中經過的所有點這條路均是其最短路。反證法易證 dijkstra基本思路 找到最短距離已經確定的頂點,從它出發...

dijkstra最短路演算法

dijkstra演算法 1.定義概覽 dijkstra 迪傑斯特拉 演算法是典型的單源最短路徑演算法,用於計算乙個節點到其他所有節點的最短路徑。主要特點是以起始點為中心向外層層擴充套件,直到擴充套件到終點為止。dijkstra演算法是很有代表性的最短路徑演算法,在很多專業課程中都作為基本內容有詳細的...

最短路 Dijkstra演算法

這是一類求單源最短路的演算法,也就是求某乙個頂點到其他所有頂點的最短路。它是按照最短路徑遞增的順序來計算的。先說一下大體思路 將圖中的頂點分為兩個集合,s,v s。s儲存已經求出最短路徑的頂點,v s儲存未求出最短路的頂點。然後演算法就是不斷額的求出v s中頂點的最短路,然後把它加入s中,直到所有頂...