[c] poj2524 并查集
2015-09-14 21:10
375 查看
http://poj.org/problem?id=2524
#include<iostream>
#include<stdio.h>
using namespace std;
int a[50050];
int f[50050];
int find(int x){
if(x!=a[x]) a[x]=find(a[x]);
return a[x];
}
int main()
{
int n,m,x,y,num=1;
while(cin>>n>>m){
if(n==0 && m==0) break;
for(int i=1;i<=n;i++){
a[i]=i;
f[i]=0;
}
int re=n;
for(int i=1;i<=m;i++){
cin>>x>>y;
x=find(x);
y=find(y);
if(x==y) continue;
re--;
if(f[x]>f[y]) a[y]=x;
else a[x]=y;
if(f[x]==f[y]) f[y]++;
}
cout<<"Case "<<num<<": "<<re<<endl;
num++;
}
return 0;
}
#include<iostream>
#include<stdio.h>
using namespace std;
int a[50050];
int f[50050];
int find(int x){
if(x!=a[x]) a[x]=find(a[x]);
return a[x];
}
int main()
{
int n,m,x,y,num=1;
while(cin>>n>>m){
if(n==0 && m==0) break;
for(int i=1;i<=n;i++){
a[i]=i;
f[i]=0;
}
int re=n;
for(int i=1;i<=m;i++){
cin>>x>>y;
x=find(x);
y=find(y);
if(x==y) continue;
re--;
if(f[x]>f[y]) a[y]=x;
else a[x]=y;
if(f[x]==f[y]) f[y]++;
}
cout<<"Case "<<num<<": "<<re<<endl;
num++;
}
return 0;
}
相关文章推荐
- 一个好的截图软件
- 基于第三方QQ授权登录和新浪微博授权登录的iOS代码分析
- hdu 5446 Unknown Treasure(Lucas定理+中国剩余定理)
- 去掉导航栏下的分割线的方法
- Ubuntu下安装android studio的时候,无法进入图形界面--/usr/lib/jdk1.8.0_60/jre/lib/i386/libawt_xawt.so: libXtst.so.6: 无法打开共享对象文件: 没有那个文件或目录
- [PHP动态]0001.关于 PHP 7 你必须知道的五件事
- Seafile服务器配置
- OpenGL 第一课
- jQuery登录界面,不用跳转页面即可提交post,可以从服务器端获取返回数据
- uva 658 It's not a Bug, it's a Feature! 最短路
- 快速安装cocoapods
- eclipse在centos下面崩溃
- 树莓派扩展root分区
- hdu 1528 Perfection(数论·因子和·C++·java)
- 机器人书单与学习资源——导航篇
- iOS7自带扫描二维码、条形码功能实现
- 建立第一个窗体
- php echo/print
- [9-1]磁盘分区、创建文件系统、挂载以及链接文件
- UISlider的简单使用,一年不用一次,我是真怕自己忘了怎么用