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

2022-04-01 10:39:56 字數 2170 閱讀 1431

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

然後呢?

100 \rightarrow 60100→60;

ag \rightarrow cuag→cu;

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

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

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

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

輸入格式:

第一行為三個正整數 n, m, sn,m,s。 第二行起 mm 行,每行三個非負整數 u_i, v_i, w_iui​,vi​,wi​,表示從 u_iui​到 v_ivi​有一條權值為 w_iwi​的邊。

輸出格式:

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

輸入樣例#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 \leq n \leq 1000001≤n≤100000;

1 \leq m \leq 2000001≤m≤200000;

s = 1s=1;

1 \leq u_i, v_i\leq n1≤ui​,vi​≤n;

0 \leq w_i \leq 10 ^ 90≤wi​≤109,

0 \leq \sum w_i \leq 10 ^ 90≤∑wi​≤109。

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

2018.09.04 資料更新 from @zzq

/*

還記得一年前某人說slf優化或者lll優化的spfa不會被卡,結果今天的32分怎麼解釋??

*/#include

#include

#include

#include

using

namespace

std;

deque

q;bool vis[100010

];int head[100010],dis[100010

],cnt,n,m,s;

struct

nodee[

200010

];void insert(int

from,int to,int

v)int

main()

memset(dis,

0x3f,sizeof

(dis));

q.push_back(s);vis[s]=1;dis[s]=0

;

while(!q.empty())}}

}for(int i=1;i<=n;i++)printf("

%d "

,dis[i]);

return0;

}

32分 slf優化spfa

#include#include

#include

#include

using

namespace

std;

struct

edgee[

200010

];int cnt,n,m,s,head[100010],dis[100010

];bool vis[100010

];struct

node

}a[100010

];priority_queue

q;void insert(int

from,int to,int

v)node make_node(

int id,int

dist)

void

dij()}}

}int

main()

memset(dis,

0x3f,sizeof

(dis));

dij();

for(int i=1;i<=n;i++)printf("

%d "

,dis[i]);

return0;

}

100分 堆優化dij

洛谷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 模板 單源最短路徑(標準版)

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