HDU ACM 1856 More is better->并查集
来源:互联网 发布:手机挖币软件 编辑:程序博客网 时间:2024/05/16 19:03
解析:又是一个并查集。
1、题意:王老师需要一些男生帮他做事。要求男生之间都是朋友关系,可以直接的,也可以间接地。最多可以挑选出几个男生(最少挑一个)?
2、并查集,求所有集合中最大集合的元素个数。
3、要注意一个地方是:当n=0时,要输出1。
#include<iostream> #include<algorithm>using namespace std;int p[10000001],num[10000001];bool Init(int n) //一开始指向自己{for(int i=0;i<=10000000;i++){p[i]=i;num[i]=1; //一开始每个集合都只有一个元素}return true;}int Find(int x) //找到根节点{int r,i,j;r=x;while(r!=p[r]) r=p[r]; //路径压缩准备,找到根节点i=x;while(i!=p[i]){j=p[i];p[i]=r;i=j;}return i; //返回根节点}bool Merge(int x,int y) //返回是否需要合并{int tx,ty;tx=Find(x);ty=Find(y);if(tx==ty) return false;p[tx]=ty;num[ty]+=num[tx]; //合并集合元素个数return true;}int main() { int n,a,b,max,i,maxnum;while(scanf("%d",&n)==1){Init(n);maxnum=0;for(i=0;i<n;i++){scanf("%d%d",&a,&b);maxnum=maxnum>a?maxnum:a;maxnum=maxnum>b?maxnum:b;Merge(a,b);}max=1; //注意0个时也为1for(i=1;i<=maxnum;i++)if(max<num[i])max=num[i];printf("%d\n",max);;} return 0; }
0 0
- HDU ACM 1856 More is better->并查集
- [ACM]hdu 1856 more is better 并查集
- HDU ACM 1856. More is better(并查集)
- hdu 1856 More is better(并查集基础)
- hdu 1856 More is better 并查集(二)
- 并查集 Hdu 1856 More is better
- hdu 1856 More is better (并查集入门)
- HDU 1856 More is better 并查集 路径压缩
- hdu 1856 More is better(并查集)
- hdu 1856 More is better(并查集)
- hdu 1856 more is better 并查集
- hdu 1856 More is better 并查集
- HDU 1856 More is better 并查集
- hdu 1856 More is better(并查集)
- hdu 1856 More is better (并查集)
- HDU 1856 More is better 并查集
- HDU-1856-More is better(并查集)
- HDU 1856 More is better (数据结构,并查集)
- 如何提升程序员的非技术才能
- git命令总结下
- nyoj.733 万圣节派对【水题】 2015/03/15
- android蓝牙4.0(BLE)开发之ibeacon初步
- ButterKnife源码分析
- HDU ACM 1856 More is better->并查集
- mongodb 数据库创建和删除
- Corporative Network LA3027
- 将博客搬至CSDN
- 如何使用自定义注解。
- Intellij IDEA 14.0修改配置路径
- 【C++知识点总结】运算符 & 运算符重载
- 用XMPP协议来创建自己的即时聊天app
- git常用命令总结上