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: 複製1 2 2
2 3 2
2 4 1
1 3 5
3 4 3
1 4 4
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
/*32分 slf優化spfa還記得一年前某人說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;
}
#include#include100分 堆優化dij#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;
}
洛谷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 個點,...