hdu 1232 並查集小試牛刀

2021-05-27 02:19:04 字數 531 閱讀 6037

今天第一次接觸並查集這個神馬東西,花了二個小時去搞懂一些基本的東西;

並查集思想:1.並查集是用來處理兩個不相交集合的問題

2.以樹為基礎,組成乙個森林,一棵樹代表乙個集合

3.判斷兩個元素是否在同一集合中,只要知道是否在同一棵樹中,也就是是否具有相同的根結點;

4.壓縮路徑:在尋找根結點過程中

5.合併兩個集合

下面是hdu1232的**:

#include#includeusing namespace std;

int find_father(int x,vector& father)

return father[x];}

void merge(int a,int b,vector&father)

int main()

cin >>nway;

for(int i = 0;i < nway;i++)

} int count = -1;

for(int i = 1;i <= ntown;i++)

cout <

HDU 1232(並查集學習筆記)

原來在練最小生成樹的時候,用prim寫過這個題目。後面發現這個題用並查集做更好。不管是時間還是占用記憶體都是大大優化了。並查集實現 每個集合用一棵 有根樹 表示 定義陣列 set 1.n set i i 則i表示本集合,並是集合對應樹的根 set i j,j i,則 j 是 i 的父節點.程式 in...

HDU 1232 暢通工程(並查集)

題意 有n個城鎮,已經現在已經有m條道路,每條道路連線兩個城鎮 可以重複連線 目標是使任意兩個城鎮間都可以實現交通 不一定有直接的道路相連,只要互相間接通過道路可達即可 求最少還需要建設多少條道路。本題看上去像圖的連通性問題,和圖論有關,但是其實不必用圖論的那些演算法解決。說這話是因為這是並查集配的...

並查集 HDU 1232 暢通工程

problem description 某省調查城鎮交通狀況,得到現有城鎮道路統計表,表中列出了每條道路直接連通的城鎮。省 暢通工程 的目標是使全省任何兩個城鎮間都可以實現交通 但不一定有直接的道路相連,只要互相間接通過道路可達即可 問最少還需要建設多少條道路?input 測試輸入包含若干測試用例。...