P3371 模板 單源最短路徑

2021-09-07 11:10:29 字數 1210 閱讀 9731

如題,給出乙個有向圖,請輸出從某一點出發到所有點的最短路徑長度。

輸入格式:

第一行包含三個整數n、m、s,分別表示點的個數、有向邊的個數、出發點的編號。

接下來m行每行包含三個整數fi、gi、wi,分別表示第i條有向邊的出發點、目標點和長度。

輸出格式:

一行,包含n個用空格分隔的整數,其中第i個整數表示從點s出發到點i的最短路徑長度(若s=i則最短路徑長度為0,若從點s無法到達點i,則最短路徑長度為2147483647)

輸入樣例#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

時空限制:1000ms,128m

資料規模:

對於20%的資料:n<=5,m<=15

對於40%的資料:n<=100,m<=10000

對於70%的資料:n<=1000,m<=100000

對於100%的資料:n<=10000,m<=500000

樣例說明:

1 #include2 #include3 #include4 #include5 #include6

using

namespace

std;

7const

int maxn=500001;8

struct

node

9edge[maxn];

15int num=1;16

inthead[maxn];

17void add(int x,int y,int

z)18

25int

dis[maxn];

26int

vis[maxn];

27int

n,m,s;

28void spfa(int

s)2950}

51}52}

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

5457}58

intmain()

5969

spfa(s);

70return0;

71 }

P3371 模板 單源最短路徑

題目描述 如題,給出乙個有向圖,請輸出從某一點出發到所有點的最短路徑長度。輸入輸出格式 輸入格式 第一行包含三個整數n m s,分別表示點的個數 有向邊的個數 出發點的編號。接下來m行每行包含三個整數fi gi wi,分別表示第i條有向邊的出發點 目標點和長度。輸出格式 一行,包含n個用空格分隔的整...

P3371 模板 單源最短路徑

題目描述 如題,給出乙個有向圖,請輸出從某一點出發到所有點的最短路徑長度。輸入輸出格式 輸入格式 第一行包含三個整數n m s,分別表示點的個數 有向邊的個數 出發點的編號。接下來m行每行包含三個整數fi gi wi,分別表示第i條有向邊的出發點 目標點和長度。輸出格式 一行,包含n個用空格分隔的整...

洛谷 P3371 模板 單源最短路徑

題目大意 在乙個有向圖中,有m條邊 1 m 500000 n個點 1 n 10000 求點s到1 n個點的最短路徑長度,無最短路就輸出maxlongint。spfa 佇列優化 dis i 表示點s到i的最短路徑,一開始dis陣列為maxlongint。1.用佇列優化,就可以省略列舉每個點的時間,由o...