題目描述
給出乙個有向圖,請輸出從某一點出發到所有點的最短路徑長度。
輸入第一行包含三個整數n、m、s,分別表示點的個數、有向邊的個數、出發點的編號。
接下來m行每行包含三個整數fi、gi、wi,分別表示第i條有向邊的出發點、目標點和長度。
輸出n行,每行n個用空格分隔的整數,其中第i個整數表示從點s出發到點i的最短路徑長度(若s=i則最短路徑長度為0,若從點s無法到達點i,則該點最短路徑不輸出)
樣例輸入
4 6 1
1 2 2
2 3 2
2 4 1
1 3 5
3 4 3
1 4 4
樣例輸出02
43提示對於100%的資料:n<=10000,m<=100000。保證資料隨機。
#include .h>
using std:
:queue;
//在std的情況下執行命令
using std:
:memset;
//執行器銘
int n,m,st;
int a_size,head[
130000
],min_dis[
130000];
bool vis[
130000];
queue q;
struct farmer_johna[
130000];
inline void
add(int from
,int to,int dis)
inline void
write
(int x)
inline int read()
while
(ch>=
'0'&&ch<=
'9')
sum=sum*
10+ch-
'0',ch=
getchar()
;return sum*sign;
}inline void
spfa()
}}}}
int main()
spfa()
;for
(int i=
1;i<=n;i++)if
(min_dis[i]
!=0x3f3f3f3f
)write
(min_dis[i]),
putchar
('\n');
return0;
}
單源最短路
恢復內容開始 dijkstra spfa floyd多源變單源 熱浪 模板題 使用spfa過 spfa 從佇列中取出點進行鬆弛操作 使用st記錄點是否還在佇列中 如果這個點本來就存在佇列中那麼就重複加入點了void spfa int s 信使 廣播式求時間 求廣播所有點的最短時間 每個點接受到向他的...
多源最短路和單源最短路
多源最短路 例題 usaco08open clear and present danger s 單源最短路例題 dijkstra求最短路 i 給定乙個n個點m條邊的有向圖,圖中可能存在重邊和自環,所有邊權均為正值。請你求出1號點到n號點的最短距離,如果無法從1號點走到n號點,則輸出 1。輸入格式 第...
單源最短路徑
include define max 999 define maxverts 10 typedef struct graph void chushi graph g void dij graph int key,int int int main for i 1 i g.numverts i dij ...