C 最短路 鄰接表儲存及SPFA演算法

2021-08-04 17:04:31 字數 847 閱讀 7691

c--最短路

time limit: 7000ms memory limit: 65536kb

problem description

給出乙個帶權無向圖,包含n個點,m條邊。求出s,e的最短路。保證最短路存在。

input

多組輸入。

對於每組資料。

第一行輸入n,m(1<= n && n<=5*10^5,1 <= m && m <= 2*10^6)。

接下來m行,每行三個整數,u,v,w,表示u,v之間有一條權值為w(w >= 0)的邊。

最後輸入s,e。

output

對於每組資料輸出乙個整數代表答案。

example input

3 11 2 3

1 2example output

3思路:

由於節點的資料範圍過大,因此無法利用二維陣列儲存路徑,此時需要使用連線表儲存路徑。

spfa演算法:

1.可以解決有負權值的情況。

2.利用佇列進行鬆弛操作。

#include #include #include #include #include #include #include #define inf 0x3f3f3f3f

using namespace std;

struct node

a,b;

vectorv[500100];

int vis[500100],dist[500100], n, m;

void spfa(int s, int e)}}

}cout<>s>>e;

spfa(s,e);

}}

HDU 2544 最短路 SPFA 鄰接表 模板

problem description 在每年的校賽裡,所有進入決賽的同學都會獲得一件很漂亮的t shirt。但是每當我們的工作人員把上百件的衣服從商店運回到賽場的時候,卻是非常累的!所以現在他們想要尋找最短的從商店到賽場的路線,你可以幫助他們嗎?input 輸入包括多組資料。每組資料第一行是兩個整...

最短路SPFA演算法 (通過鄰接表來實現)

適用範圍 給定的圖存在負權邊,這時類似dijkstra等演算法便沒有了用武之地,而bellman ford演算法的複雜度又過高,spfa演算法便派上用場了。我們約定有向加權圖g不存在負權迴路,即最短路徑一定存在。當然,我們可以在執行該演算法前做一次拓撲排序,以判斷是否存在負權迴路,但這不是我們討論的...

SCU 最短路 Dijkstra 鄰接表

time limit 1000ms memory limit 32768k 給定乙個n個節點,m條有向邊的圖,再給你起點和終點,請問其中有多少條互不重疊的從起點到終點的最短路,即互相沒有公共邊的最短路個數 可以有公共點 用過邊的不能再用。輸入第一行有乙個t,表示樣例個數。t 60 每個樣例第一行有兩...