題目鏈結
給定乙個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中頂點的...