spfa 模板複習 hicocoder 1093

2021-10-05 20:11:16 字數 1351 閱讀 7117

時間限制:10000ms

單點時限:1000ms

記憶體限制:256mb

描述萬聖節的晚上,小hi和小ho在吃過晚飯之後,來到了乙個巨大的鬼屋!

鬼屋中一共有n個地點,分別編號為1..n,這n個地點之間互相有一些道路連通,兩個地點之間可能有多條道路連通,但是並不存在一條兩端都是同乙個地點的道路。

不過這個鬼屋雖然很大,但是其中的道路並不算多,所以小hi還是希望能夠知道從入口到出口的最短距離是多少? 輸入

每個測試點(輸入檔案)有且僅有一組測試資料。

在一組測試資料中:

第1行為4個整數n、m、s、t,分別表示鬼屋中地點的個數和道路的條數,入口(也是乙個地點)的編號,出口(同樣也是乙個地點)的編號。

接下來的m行,每行描述一條道路:其中的第i行為三個整數u_i, v_i, length_i,表明在編號為u_i的地點和編號為v_i的地點之間有一條長度為length_i的道路。

對於100%的資料,滿足n<=10^5,m<=10^6, 1 <= length_i <= 10^3, 1 <= s, t <= n, 且s不等於t。

對於100%的資料,滿足小hi和小ho總是有辦法從入口通過地圖上標註出來的道路到達出口。

輸出對於每組測試資料,輸出乙個整數ans,表示那麼小hi和小ho為了走出鬼屋至少要走的路程。

樣例輸入

5 10 3 5

1 2 997

2 3 505

3 4 118

4 5 54

3 5 480

3 4 796

5 2 794

2 5 146

5 4 604

2 5 63

樣例輸出

172
#include using namespace std;

#define fi first

#define se second

#define ff(i,a,b) for(int i = a; i <= b; i++)

#define f(i,a,b) for(int i = a; i < b; i++)

typedef pairp;

#define ll long long

vectorv[100010];

int d[100010],vis[100010];

priority_queue,greater> q;

int spfa(int s,int t)

} }}int main()

spfa(s,t);

cout << d[t] << endl;

return 0;

}

SPFA演算法模板

spfa shortest path faster algorithm 佇列優化 演算法是求單源 最短路徑 的一種演算法,在 bellman ford 演算法的基礎上加上乙個佇列優化,減少了冗餘的 鬆弛操作 是一種高效的最短路演算法。求單源最短路的spfa演算法的全稱是 shortest path ...

費用流模板 SPFA

對於乙個網路,我們可能會有多組最大流,現在我們給每條邊附上乙個費用係數,每條邊產生的費用 這條邊的流量 這條邊的費用係數,常見的問題是求最小費用最大流。做法非常簡單,每次找一條費用最小的增廣路,並確定這條增廣路上最小的流量,整條增廣路上的弧減去這個流量,反向弧加上,直到沒有增廣路為止。答案是每次的最...

模板 負環(spfa)

暴力列舉 spfa bellman ford 奇怪的貪心 超神搜尋 輸入格式 第一行乙個正整數t表示資料組數,對於每組資料 第一行兩個正整數n m,表示圖有n個頂點,m條邊 接下來m行,每行三個整數a b w,表示a b有一條權值為w的邊 若w 0則為單向,否則雙向 輸出格式 共t行。對於每組資料,...