單源最短路徑 SPFA

2021-09-11 18:24:48 字數 1058 閱讀 3868

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

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

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

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

4 6 1

1 2 2

2 3 2

2 4 1

1 3 5

3 4 3

1 4 4

0 2 4 3

#include

#include

#include

using

namespace std;

struct emm

f[500001];

bool pd[

10001];

int n,m,ll,lr,le,s,t,l,r=

1,u,o;

int ls[

10001

],dl[

40001

],dis[

10001];

intmain()

memset

(dis,

0x7f

,sizeof

(dis));

dis[s]=0

,dl[1]

=s,pd[s]

=true

;while

(l//spfa法

} pd[u]

=false;}

for(

int i=

1;i<=n;

++i)

if(dis[i]

!=dis[0]

)printf

("%d "

,dis[i]);

else

printf

("2147483647 ");

return0;

}

單源最短路徑 SPFA演算法

求單源最短路徑的spfa演算法在bellman ford演算法的基礎上進行了改進,使其在能夠計算帶負權圖的單源最短路徑的基礎上,時間複雜度大幅度降低。時間複雜度 o k e k 2 基本演算法 設立乙個先進先出的佇列來儲存待優化的節點,優化時每次取出隊首節點u,並且用u點當前的最短路徑估計值對離開u...

Spfa單源最短路徑演算法

spfa 全稱shortest path faster algorithm,是求單源最短路徑的一種演算法.跟dijkstra類似,但是有一些不一樣。由於本人弱,不知道 有區別,請各位大神補充 我們來建乙個圖。首先,我們用e陣列表示各邊的關係,如下是初始狀態。我們開乙個dis陣列來儲存1號點到各點的最...

SSL ZYC 模板 單源最短路徑 SPFA

題目大意 求出乙個點到其他所有點的最短路徑。in put inp ut4 6 1 1 2 2 2 3 2 2 4 1 1 3 5 3 4 3 1 4 4 ou tput o utput 0 2 4 3思路 思路一 dijkstra 當時還沒有學spfa,看了資料感覺dijkstra可以卡過,於是打了...