洛谷 P2683 小島

2022-04-04 17:03:16 字數 1878 閱讀 5539

西伯利亞北部的寒地,坐落著由 n 個小島組成的島嶼群,我們把這些小島依次編號為 1 到 n 。

起初,島嶼之間沒有任何的航線。後來隨著交通的發展,逐漸出現了一些連通兩座小島的航線。例如增加一條在 u 號小島與 v 號小島之間的航線,這條航線的用時為 e。 那麼沿著這條航線,u 號小島上的人可以前往 v 號小島,同樣的 v 號小島上的人也可以前往 u 號小島,其中沿著這一條航線花費的時間為 e。

同時,隨著旅遊業的發展,越來越多的人前來遊玩。那麼兩個小島之間的最短路徑是多少便成為了飽受關注的話題。

輸入格式:

輸入共 m+1 行。

第一行有兩個整數 n 和 m,分別表示小島的數與總算子。

接下來的 m 行,每行表示乙個操作,格式如下:

0 s t:表示詢問從 s 號小島到 t 號小島的最短用時(1<=s<=n, 1<=t<=n, s\neq t)。

1 u v e:表示新增了一條從 u 號小島到 v 號小島,用時為 e 的雙向航線(1<=u<=n, 1<=v<=n, u ≠ v, 1<=e<=10^6)。

輸出格式:

輸出針對每一次詢問,單獨輸出一行。

對於每一組詢問來說,如果不存在可行的道路,則輸出 -1,否則輸出最短用時。

輸入樣例#1: 複製

3 8 

1 3 1 10

0 2 3

1 2 3 20

1 1 2 5

0 3 2

1 1 3 7

1 2 1 9

0 2 3

輸出樣例#1: 複製

-1

1512

輸入樣例#2: 複製

5 16

1 1 2 343750

1 1 3 3343

1 1 4 347392

1 1 5 5497

1 2 3 123394

1 2 4 545492

1 2 5 458

1 3 4 343983

1 3 5 843468

1 4 5 15934

0 2 1

0 4 1

0 3 2

0 4 2

0 4 3

0 5 3

輸出樣例#2: 複製

5955

21431

9298

16392

24774

8840

對於20%的資料,n<=5且m<=30。

對於40%的資料,n<=20且m<=200。

對於60%的資料,n<=80且m<=500。

對於80%的資料,n<=100且m<=2500。

對於100%的資料,n<=100且m<=5000。

思路:spfa板子。

#include#include

#include

#include

#include

#define maxn 10002

using

namespace

std;

deque

que;

intn,m,s,t,tot,x;

intvis[maxn],num[maxn],dis[maxn];

int to[maxn],net[maxn],cap[maxn],from

[maxn];

void add(int u,int v,int

w)bool spfa(int

s) }

}return

true;}

intmain()

else

}

}

洛谷P2683 小島

西伯利亞北部的寒地,坐落著由 n 個小島組成的島嶼群,我們把這些小島依次編號為 1 到 n 起初,島嶼之間沒有任何的航線。後來隨著交通的發展,逐漸出現了一些連通兩座小島的航線。例如增加一條在 u 號小島與 v 號小島之間的航線,這條航線的用時為 e。那麼沿著這條航線,u 號小島上的人可以前往 v 號...

洛谷P5049 洛谷P5022 題解 旅行

原題 資料加強版 加強版 參考你谷題解 終於調過了 又是一如既往的申必錯誤 noi plus石錘了 原題的資料允許我們 o n 2 暴力斷邊,但是加強版的資料達到了 n log n 級別,我們必須在斷邊這一環節尋求更好的解法。考慮我們進入環後在何處回溯 根據繼續走環走到的點分類 設當前已經從 b 走...

洛谷練習P2279 P1346

2020年,人類在火星上建立了乙個龐大的基地群,總共有n個基地。起初為了節約材料,人類只修建了n 1條道路來連線這些基地,並且每兩個基地都能夠通過道路到達,所以所有的基地形成了乙個巨大的樹狀結構。如果基地a到基地b至少要經過d條道路的話,我們稱基地a到基地b的距離為d。由於火星上非常乾燥,經常引發火...