NYOJ 608 畅通工程 并查集
生活随笔
收集整理的這篇文章主要介紹了
NYOJ 608 畅通工程 并查集
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
暢通工程
時間限制:2000?ms ?|? 內存限制:65535?KB 難度:3 描述注意:兩個城市之間可以有多條道路相通,也就是說
3 3
1 2
1 2
2 1
這種輸入也是合法的
當N為0時,輸入結束,該用例不被處理。
? ? ? ?這個題就是直接套用模板,先求出有幾個集合,然后用(集合數-1)即可。 ?題目鏈接
01.#include<stdio.h> 02.int?father[1002]; 03.int?find(int?x)?//尋找根節點 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.}總結
以上是生活随笔為你收集整理的NYOJ 608 畅通工程 并查集的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: hdu 4160 Dolls 匈
- 下一篇: 面试官真是搞笑!让实现线程安全的单例,又