hdu1232 暢通工程 並查集入門

2021-08-23 14:40:39 字數 532 閱讀 7191

推薦乙個有趣的並查集講解文章點這裡

hdu1232_暢通工程

講解都在**中,很好理解

#includeusing namespace std;

int fa[1100];///fa陣列記錄每個點的父親

int lcount;

int find(int x)

int j;

while(fa[x]!=r)

return r;

}void join(int x,int y)

}int main()

int a,b;

for(int i=0; i>a>>b;

join(a,b);

}cout《在這裡總結一下並查集一些其他用法

1.求一些路徑中的環路個數(如題目uva1160)

這裡就要說到join函式的妙用了,當join(a,b)時,如果fa(a)==fa(b),那麼就說明a和b已經在乙個集合中了,那麼在加一次ab路徑就會產生環路了,so,在if(fa(a)==fa(b))時,令環路個數ans++;

HDU 1232 暢通工程(並查集)

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

並查集 HDU 1232 暢通工程

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

HDU1232 暢通工程 並查集問題

所謂並查集,就是指查詢無向圖或是有向圖中各個點的聯通與否,其中可以分為兩個部分,乙個是根節點的尋找,乙個是聯通過程。首先在根節點的尋找中使用儲存前驅節點資訊的數pre,逐層詢問,直到最上的點 如果兩個點的最上的點不同那麼就需要將他們聯通,聯通的方法就是將其中乙個最上點的前驅節點轉為另乙個最上點,這要...