洛谷 P4779 模板 單源最短路徑(標準版)

2022-03-06 23:18:37 字數 1723 閱讀 1969

洛谷 p4779【模板】單源最短路徑(標準版)

2018 年 7 月 19 日,某位同學在 noi day 1 t1 歸程 一題裡非常熟練地使用了乙個廣為人知的演算法求最短路。

然後呢?

100→60 ;

ag→cu ;

最終,他因此沒能與理想的大學達成契約。

小 f 衷心祝願大家不再重蹈覆轍。

給定乙個 n 個點, m條有向邊的帶非負權圖,請你計算從 s 出發,到每個點的距離。

資料保證你能從 s 出發到任意點。

輸入格式:

第一行為三個正整數 n, m, s。 第二行起 m 行,每行三個非負整數 ui​,vi​,wi​,表示從 ui​到 vi​有一條權值為 wi​的邊。

輸出格式:

輸出一行 n 個空格分隔的非負整數,表示 s 到每個點的距離。

輸入樣例#1: 複製

4 6 1

1 2 2

2 3 2

2 4 1

1 3 5

3 4 3

1 4 4

輸出樣例#1: 複製

0 2 4 3
樣例解釋請參考 資料隨機的模板題。

1 ≤ n ≤ 100000 ;

1 ≤ m ≤ 200000 ;

s = 1;

1 ≤ ui​,vi ​≤ n ;

0 ≤ wi​ ≤ 109,

0 ≤ ∑wi ​≤ 109 。

本題資料可能會持續更新,但不會重測,望周知。

思路:spfa+優先佇列優化  or  dijkstra+堆優化

用p3371中的**(再開上long long),可以過掉後兩個點,但前幾個點都會tle

#include#include

#include

#include

#include

#include

#define m 100005

using

namespace

std;

intn, m, s, a, b, c;

struct

edge ;

vector

g[m];

inline

intread()

long

long

dis[m];

bool

inqueue[m];

struct

node ;

bool

operator

< (const node &x, const node &y)

priority_queue

q;int

cnt;

bool

hasout[m];

inline

bool spfa(int

s) );

inqueue[s] = 1; dis[s] = 0

;

intu, v, cost;

while(!q.empty()) );}}

}}

return1;

}int

main() );

}spfa(s);

for(register int i = 1; i <= n; ++i)

printf(

"%d

", dis[i]);

return0;

}

spfa+優先佇列

洛谷P4779 單源最短路徑與Dijkstra演算法

蒟蒻出品,歡迎指正 dijkstra演算法 由於字母太多,以下統一用dij代替 逃 dij演算法,使用廣度優先搜尋與貪心演算法解決單源圖的最短路徑問題,不適用於有負權邊的圖。時間複雜度 o mlogn n為頂點數,m為邊數。演算法思路 對於所需求解的圖,首先假設任意兩頂點之間距離為正無窮。然後開始加...

洛谷 P4779 模板 單源最短路徑(標準版)

求單源最短路徑。可以記住的模板有 堆優化的 dijkstra,bellman ford,spfa。堆優化的 dijkstra 演算法複雜度為 o e t dk v tem o e cdot t v cdot t o e tdk v tem 其中 e e e 是邊集大小,v v v 是點集大小,t d...

洛谷P4779 模板 單源最短路徑(標準版)

2018 年 7 月 19 日,某位同學在 noi day 1 t1 歸程 一題裡非常熟練地使用了乙個廣為人知的演算法求最短路。然後呢?100 rightarrow 60100 60 ag rightarrow cuag cu 最終,他因此沒能與理想的大學達成契約。小 f 衷心祝願大家不再重蹈覆轍。...