Dijkstra求最短路

2021-10-05 07:18:57 字數 803 閱讀 2254

題目鏈結

給定乙個n個點m條邊的有向圖,圖中可能存在重邊和自環,所有邊權均為正值。

請你求出1號點到n號點的最短距離,如果無法從1號點走到n號點,則輸出-1。

輸入格式

第一行包含整數n和m。

接下來m行每行包含三個整數x,y,z,表示存在一條從點x到點y的有向邊,邊長為z。

輸出格式

輸出乙個整數,表示1號點到n號點的最短距離。

如果路徑不存在,則輸出-1。

資料範圍

1≤n≤500,

1≤m≤105,

圖中涉及邊長均不超過10000。

輸入樣例:

3 31 2 2

2 3 1

1 3 4

輸出樣例:

3

#include

#include

#include

using namespace std;

const

int n=

510,inf=

0x3f3f3f3f

;int n,m;

int g[n]

[n],dist[n]

;bool st[n]

;int

dijkstra()

if(dist[n]

==inf)

return-1

;else

return dist[n];}

intmain()

cout<<

dijkstra()

}

Dijkstra求最短路

題目鏈結 給定乙個n個點m條邊的有向圖,圖中可能存在重邊和自環,所有邊權均為非負值。請你求出1號點到n號點的最短距離,如果無法從1號點走到n號點,則輸出 1。輸入格式 第一行包含整數n和m。接下來m行每行包含三個整數x,y,z,表示存在一條從點x到點y的有向邊,邊長為z。輸出格式 輸出乙個整數,表示...

Dijkstra求最短路

如果圖中存在負權邊,則不要使用 dijkstra 來求最短路。如果題目中表明所給的圖存在重邊與自環。在求最短路徑的問題中,如果自環邊權重是 正數,顯然它不會出現在最短路徑中。如果自環邊是 負數,則需要考慮出現在最短路中。如果是稠密圖,使用了鄰接矩陣來存邊,則因為求最短路,所以我們對於重邊,只需要儲存...

Dijkstra求最短路

1.通過dijkstra計算圖g中的最短路徑時,需要指定起點s 即從頂點s開始計算 2.此外,引進兩個集合s和u。s的作用是記錄已求出最短路徑的頂點 以及相應的最短路徑長度 而u則是記錄還未求出最短路徑的頂點 以及該頂點到起點s的距離 3.初始時,s中只有起點s u中是除s之外的頂點,並且u中頂點的...