日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

NYOJ 608 畅通工程 并查集

發(fā)布時間:2025/3/16 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 NYOJ 608 畅通工程 并查集 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

暢通工程

時間限制:2000?ms ?|? 內(nèi)存限制:65535?KB 難度:3 描述
某省調(diào)查城鎮(zhèn)交通狀況,得到現(xiàn)有城鎮(zhèn)道路統(tǒng)計表,表中列出了每條道路直接連通的城鎮(zhèn)。省政府“暢通工程”的目標是使全省任何兩個城鎮(zhèn)間都可以實現(xiàn)交通(但不一定有直接的道路相連,只要互相間接通過道路可達即可)。問最少還需要建設(shè)多少條道路?? 輸入
測試輸入包含若干測試用例。每個測試用例的第1行給出兩個正整數(shù),分別是城鎮(zhèn)數(shù)目N ( < 1000 )和道路數(shù)目M;隨后的M行對應(yīng)M條道路,每行給出一對正整數(shù),分別是該條道路直接連通的兩個城鎮(zhèn)的編號。為簡單起見,城鎮(zhèn)從1到N編號。?
注意:兩個城市之間可以有多條道路相通,也就是說
3 3
1 2
1 2
2 1
這種輸入也是合法的
當(dāng)N為0時,輸入結(jié)束,該用例不被處理。
輸出
對每個測試用例,在1行里輸出最少還需要建設(shè)的道路數(shù)目。
樣例輸入
4 2 1 3 4 3 3 3 1 2 1 3 2 3 5 2 1 2 3 5 999 0 0
樣例輸出
1 0 2 998

? ? ? ?這個題就是直接套用模板,先求出有幾個集合,然后用(集合數(shù)-1)即可。 ?題目鏈接

01.#include<stdio.h> 02.int?father[1002]; 03.int?find(int?x)?//尋找根節(jié)點 04.{ 05.if(father[x]!=x) 06.father[x]=find(father[x]); 07.return?father[x]; 08.} 09.void?merge(int?a,int?b)?//合并a和b所在的集合 10.{ 11.int?p=find(a); 12.int?q=find(b); 13.father[p]=q; 14.} 15.int?main() 16.{ 17.int??n,m,a,b,i; 18.while(~scanf("%d",&n)&&n) 19.{ 20.scanf("%d",&m); 21.for(i=1;i<=n;i++) 22.father[i]=i;//初始化為每個點為一個單獨集合 23.for(i=0;i<m;i++) 24.{ 25.scanf("%d%d",&a,&b); 26.merge(a,b);?//合并a、b 27.} 28.int?count=0; 29.for(i=1;i<=n;i++) 30.if(father[i]==i)?//查找有幾個集合 31.count++; 32.printf("%d\n",count-1); 33.} 34.return?0; 35.}

總結(jié)

以上是生活随笔為你收集整理的NYOJ 608 畅通工程 并查集的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。