P1111 修復公路

2022-04-28 17:45:09 字數 2174 閱讀 8577

a 地區在**過後,連線所有村莊的公路都造成了損壞而無法通車。**派人修復這些公路。

給出a地區的村莊數 n ,和公路數 m ,公路是雙向的。並告訴你每條公路的連著哪兩個村莊,並告訴你什麼時候能修完這條公路。問最早什麼時候任意兩個村莊能夠通車,即最早什麼時候任意兩條村莊都存在至少一條修復完成的道路(可以由多條公路連成一條道路)

輸入格式:

第 1 行兩個正整數 n,m

下面 m 行,每行 3 個正整數 x, y, t,告訴你這條公路連著 x,y兩個村莊,在時間t時能修復完成這條公路。

輸出格式:

如果全部公路修復完畢仍然存在兩個村莊無法通車,則輸出 -1,否則輸出最早什麼時候任意兩個村莊能夠通車。

輸入樣例#1: 複製

4 4

1 2 6

1 3 4

1 4 5

4 2 3

輸出樣例#1: 複製

5
100000n≤1000,m≤100000

100000x≤n,y≤n,t≤100000

emm,並查集。。

除了這一塊兒都是模板。。

認真讀好題,

要求任意兩個點都能相互到達,

而且一條路徑可以由多條路徑組成,

而且路徑可以同時修建,

這就是取max的原因

根據樣例,我們可以修建的路如上圖,

怎樣最優呢?

使任意兩個點都能相互到達而且max最小。

(別誤會啊,可不是二分。。)

那看圖就能看出來,去掉1到2的那條路徑就可以了。

答案就是這樣的:

因為路是雙向的,所以任意兩個點可以相互到達,

而且max=5是所有可行答案中最小的。

下面就是**實現過程了:

1 #include2 #include3 #include4 #include5 #include6

using

namespace

std;78

intn,m,ans,t; //模板

9int fa[200002

];10

11struct

nodea[100002

];14

15int find(int

x) //模板

1620

21bool

cmp(node x,node y) //模板

2225

26int

main()

2748}49

}50 printf("-1"

);51

return0;

52 }

如果你不開心,那我就把右邊這個帥傻子分享給你吧,

你看,他這麼好看,那麼深情的望著你,你還傷心嗎?

真的!這**盯上他五秒鐘就想笑了。

一切都會過去的。

P1111 修復公路

a地區在 過後,連線所有村莊的公路都造成了損壞而無法通車。派人修復這些公路。給出a地區的村莊數n,和公路數m,公路是雙向的。並告訴你每條公路的連著哪兩個村莊,並告訴你什麼時候能修完這條公路。問最早什麼時候任意兩個村莊能夠通車,即最早什麼時候任意兩條村莊都存在至少一條修復完成的道路 可以由多條公路連成...

P1111 修復公路

題目提供者該使用者不存在 標籤並查集 難度普及 提高 提交該題 討論 題解記錄 a地區在 過後,連線所有村莊的公路都造成了損壞而無法通車。派人修復這些公路。給出a地區的村莊數n,和公路數m,公路是雙向的。並告訴你每條公路的連著哪兩個村莊,並告訴你什麼時候能修完這條公路。問最早什麼時候任意兩個村莊能夠...

P1111 修復公路

aa地區在 過後,連線所有村莊的公路都造成了損壞而無法通車。派人修復這些公路。給出a地區的村莊數nn,和公路數mm,公路是雙向的。並告訴你每條公路的連著哪兩個村莊,並告訴你什麼時候能修完這條公路。問最早什麼時候任意兩個村莊能夠通車,即最早什麼時候任意兩條村莊都存在至少一條修復完成的道路 可以由多條公...