洛谷 p3371 【模板】單源最短路徑
如題,給出乙個有向圖,請輸出從某一點出發到所有點的最短路徑長度。
輸入格式:
第一行包含三個整數n、m、s,分別表示點的個數、有向邊的個數、出發點的編號。
接下來m行每行包含三個整數fi、gi、wi,分別表示第i條有向邊的出發點、目標點和長度。
輸出格式:
一行,包含n個用空格分隔的整數,其中第i個整數表示從點s出發到點i的最短路徑長度(若s=i則最短路徑長度為0,若從點s無法到達點i,則最短路徑長度為2147483647)
輸入樣例#1: 複製
4 6 1輸出樣例#1: 複製1 2 2
2 3 2
2 4 1
1 3 5
3 4 3
1 4 4
0 2 4 3時空限制:1000ms,128m
資料規模:
對於20%的資料:n<=5,m<=15
對於40%的資料:n<=100,m<=10000
對於70%的資料:n<=1000,m<=100000
對於100%的資料:n<=10000,m<=500000
樣例說明:
(1到3和1到4的文字位置調換)
思路:spfa 或 dijkstra 跑最短路(話說我沒大用dijkstra,一般都是用spfa。。。)
難度:普及/提高-
#include#include#include
#define maxn 0x7fffffff
#define m 500001
using
namespace
std;
queue
q;intn, m, s;
inttot;
intdis[m], vis[m];
int to[m*2], head[m*2], cap[m*2], net[m*2
];void add(int u, int v, int
w) void spfa(int x)
}}int
main()
spfa(s);
for(int i = 1; i <= n; i++) printf("
%d "
, dis[i]);
return0;
}
洛谷 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個整數表示從點s出發到點i的最短...