跳轉理解題意
這道題是洛谷試煉場並查集板塊的第一題,但卻是一道最小生成樹,至於為什麼在並查集的版塊裡,應該是kruskal演算法運用到了並查集判斷如果新增某條邊是否會產生環,題目中要求如何在最短時間內使圖中任意兩個點都能互相到達,因為所有道路可以同時開始修復,所以題目就是讓我們求最小生成樹中最長的那條邊。這是一道最小生成樹(kruskal)的板子題,同時要注意公路無法修建的情況,即原圖不連通不存在最小生成樹的情況
//ac**:
#include
#include
#include
using
namespace std;
struct node
;node edge[
100005];
int n,m,f[
1005
],cnt,ans;
bool flag;
intcomp
(node x,node y)
intfind
(int k)
void
kruskal()
if(cnt==n-1)
}if(cnt}int
main()
洛谷p1111 修復公路
一開始村莊之間兩兩不連通,按時間從小到大修復公路,判斷兩個村莊是否聯通,若聯通了那就直接看下一條路,若不聯通那就修復。直到m條路都遍歷完。重點來了,最早什麼時候任意兩條村莊都存在至少一條修復完成的道路 可以由多條公路連成一條道路 滿足條件最少需要幾條路?n個村莊就n 1條唄,輸出時判斷公路數有沒有至...
洛谷P1111 修復公路
做完題看了一下題解,發現大佬們用的都是什麼最小生成樹,蒟蒻瑟瑟發抖,其實這題用最簡單的並查集就可以通過 對於時間進行排序,從最早完成的時間開始,每次合併兩條邊,然後檢視他們是否屬於同一集合,如果是,輸出完成時間,直接結束程式 如果遍歷結束還沒用都處於同一聯通塊,那麼就輸出 1.不開o2記得卡常 附 ...
洛谷P1111 修復公路
最近並查集有點上癮,下午來道黃題提神醒腦 p1111 修復公路 試題描述 a地區在 過後,連線所有村莊的公路都造成了損壞而無法通車。派人修復這些公路。給出a地區的村莊數n,和公路數m,公路是雙向的。並告訴你每條公路的連著哪兩個村莊,並告訴你什麼時候能修完這條公路。問最早什麼時候任意兩個村莊能夠通車,...