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

2022-05-24 19:33:12 字數 1021 閱讀 6411

某省調查城鎮交通狀況,得到現有城鎮道路統計表,表中列出了每條道路直接連通的城鎮。省**「暢通工程」的目標是使全省任何兩個城鎮間都可以實現交通(但不一定有直接的道路相連,只要互相間接通過道路可達即可)。問最少還需要建設多少條道路?

input測試輸入包含若干測試用例。每個測試用例的第1行給出兩個正整數,分別是城鎮數目n ( < 1000 )和道路數目m;隨後的m行對應m條道路,每行給出一對正整數,分別是該條道路直接連通的兩個城鎮的編號。為簡單起見,城鎮從1到n編號。

注意:兩個城市之間可以有多條道路相通,也就是說

3 31 2

1 22 1

這種輸入也是合法的

當n為0時,輸入結束,該用例不被處理。

output對每個測試用例,在1行裡輸出最少還需要建設的道路數目。

sample input

4 2

1 34 3

3 31 2

1 32 3

5 21 2

3 5999 0

0

sample output

102

998

huge input, scanf is recommended.

hint

#include#include#include#includeusing namespace std;

int pre[1005];//用來儲存上級的陣列

int find(int x)//找最後x的boss

return r;

}void merge(int x,int y)

return;

} int main()

int a,b;

for(int t=1;t<=m;t++)

//把上級相同的歸為乙個集合

int cnt=0;

for(int t=1;t<=n;t++)

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

}return 0;

}

暢通工程 並查集入門裸題

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

暢通工程 並查集模版題

題意 多組輸入n,m,當n為0退出人輸入,n是道路數目,m是村莊總數,隨後n行,每行輸入三個數兩個村莊的編號,以及連線這兩個村莊的費用。對每一組資料輸出暢通工程的最低費用,如果不能暢通就輸出 不包括雙引號 一道是fjut的鏈結,另外一道是hdu的 思路 其實這道題就是一道排序 並查集題,將每條路的費...

並查集 暢通工程

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