洛谷 P3371 模板 單源最短路徑

2021-08-08 21:06:16 字數 929 閱讀 9149

如題,給出乙個有向圖,請輸出從某一點出發到所有點的最短路徑長度。

第一行包含三個整數n、m、s,分別表示點的個數、有向邊的個數、出發點的編號。

接下來m行每行包含三個整數fi、gi、wi,分別表示第i條有向邊的出發點、目標點和長度。

一行,包含n個用空格分隔的整數,其中第i個整數表示從點s出發到點i的最短路徑長度(若s=i則最短路徑長度為0,若從點s無法到達點i,則最短路徑長度為2147483647)

4 6 1

1 2 2

2 3 2

2 4 1

1 3 5

3 4 3

1 4 4

0 2 4 3

dijkstra

用鏈結矩陣表示圖會超時,因此可採用鏈結表表示。另外,從乙個頂點到另乙個頂點可能有多條邊,只要取其中較小的邊即可。

#include 

#include

#include

#include

#include

#include

#include

#include

using namespace std; #define n 10005 #define inf 0x7fffffff int n, m, s; int d[n], visited[n] = ; struct node }; vector

g[n]; // 鏈結表表示圖 int get_i() return ans; } int main() } if(k == -1) break; visited[k] = 1; for(i=0; i

d[k] + g[k][i].v) d[g[k][i].to] = d[k] + g[k][i].v; } } for(i=1; i<=n; i++) cout<

洛谷 P3371 模板 單源最短路徑

題目大意 在乙個有向圖中,有m條邊 1 m 500000 n個點 1 n 10000 求點s到1 n個點的最短路徑長度,無最短路就輸出maxlongint。spfa 佇列優化 dis i 表示點s到i的最短路徑,一開始dis陣列為maxlongint。1.用佇列優化,就可以省略列舉每個點的時間,由o...

洛谷P3371 模板 單源最短路徑

p3371 模板 單源最短路徑 看了b站上的spfa演算法講解,重新敲了一遍這個題,學習spfa演算法。題意 給出乙個有向圖,請輸出從某一點出發到所有點的最短路徑長度。spfa演算法是對bellman ford演算法的優化。後者複雜度為o nm 每一輪都對所有邊確定是否更新。前者將點加入佇列中,用b...

洛谷 P3371 模板 單源最短路徑

如題,給出乙個有向圖,請輸出從某一點出發到所有點的最短路徑長度。輸入格式 第一行包含三個整數n m s 分別表示點的個數 有向邊的個數 出發點的編號。接下來 m 行每行包含三個整數fi gi wi,分別表示第 i 條有向邊的出發點 目標點和長度。輸出格式 一行,包含 n個用空格分隔的整數,其中第 i...