并查集模板。。。。
2013-04-22 20:11
232 查看
#include <iostream>
#include <cstdio>
#include <cstring>
int n,m,ans,p[1010];
void Make(int *a){for(int i=1;i<=n;i++)p[i] = i;}
int Find(int x){return x==p[x]?x:(p[x]=Find(p[x]));}
void Union(int x,int y){p[Find(x)]=Find(y); }
int main(){
while (scanf("%d %d", &n, &m) != EOF && n){
Make(p);
while(m--){
int x,y;
scanf("%d%d",&x,&y);
Union(x,y);
}
ans=0;
for(int i=1;i<=n;i++)
if(Find(i)==i)ans++;
printf("%d\n",--ans);
}
return 0;
}
#include <cstdio>
#include <cstring>
int n,m,ans,p[1010];
void Make(int *a){for(int i=1;i<=n;i++)p[i] = i;}
int Find(int x){return x==p[x]?x:(p[x]=Find(p[x]));}
void Union(int x,int y){p[Find(x)]=Find(y); }
int main(){
while (scanf("%d %d", &n, &m) != EOF && n){
Make(p);
while(m--){
int x,y;
scanf("%d%d",&x,&y);
Union(x,y);
}
ans=0;
for(int i=1;i<=n;i++)
if(Find(i)==i)ans++;
printf("%d\n",--ans);
}
return 0;
}
相关文章推荐
- 并查集 模板
- 并查集 模板
- 并查集模板
- 畅通工程-并查集模板
- poj 1611 The Suspects(并查集模板题)
- poj 1611 并查集模板
- 并查集(模板&典型例题整理)
- POJ—— 2524 Ubiquitous Religions (并查集模板题)
- POJ2236Wireless Network(并查集模板)
- HDU-1232/NYOJ-608畅通工程,并查集模板题,,水过~~~
- 并查集模板题 The Suspects
- acm杭电HDU1232畅通工程 并查集 模板题
- 并查集简单模板及其解释
- {模板}并查集...
- nyist 608 并查集模板
- 洛谷 P3367 【模板】并查集
- 并查集【模板】
- 【2802】SDUTOJ (并查集模板水题2)
- 并查集——模板
- 并查集模板题-HDU1856