Dijkstra求最短路

2021-10-05 07:21:01 字數 1046 閱讀 4393

題目鏈結

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

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

輸入格式

第一行包含整數n和m。

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

輸出格式

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

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

資料範圍

1≤n,m≤1.5×105,

圖中涉及邊長均不小於0,且不超過10000。

輸入樣例:

3 31 2 2

2 3 1

1 3 4

輸出樣例:

3

#include

#include

#include

#include

using namespace std;

typedef pair<

int,

int>pii;

const

int n=

1e6+

10,inf=

0x3f3f3f3f

;int h[n]

,e[n]

,ne[n]

,w[n]

,idx;

int dist[n]

;bool st[n]

;int n,m;

void

add(

int a,

int b,

int c)

intdijkstra()

);while

(!heap.

empty()

));}

}}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。輸出格式 輸出乙個整數,表示1...

Dijkstra求最短路

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

Dijkstra求最短路

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