hdu通暢工程(並查集入門)

2021-08-14 04:58:08 字數 477 閱讀 9922

思路:題目給你城市之間的道路資訊,即哪些城市暢通,1如果和2暢通,2又和3暢通,則1和3是暢通的,並查集思想,找場上有幾條暢通的干路唄(就是擒賊先擒王的幾個王嘛)

ac**如下:

#include#include#includeusing namespace std;

#include#includeint city[2000];

void init(int n)

int find(int x)

void cat(int x,int y)

int main()

for(i=1;i<=n;i++)

printf("%d\n",cnt-1);

} return 0;

}

int find(int x)

return i; //king

}//找王的非遞迴寫法

並查集詳解(HDU 1232通暢工程)

並查集 集合的合併與查詢 其中主要有三個函式 init 初始化乙個並查集,主要是根據題目需要建立乙個原始的點集,因為還沒有處理點與點的關係,初始化每個點的父親結點為本身。find 找到並返回某個點的父親結點,以及優化路徑。unionset 處理點與點的關係。如圖1 1 在處理b與a的關係時,b與a的...

hdu1232 暢通工程 並查集入門

推薦乙個有趣的並查集講解文章點這裡 hdu1232 暢通工程 講解都在 中,很好理解 includeusing namespace std int fa 1100 fa陣列記錄每個點的父親 int lcount int find int x int j while fa x r return r v...

並查集入門題(暢通工程)

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