HDU-1856 More is better
来源:互联网 发布:sql server error 26 编辑:程序博客网 时间:2024/05/02 00:15
#include <iostream>#include <cstdio>using namespace std;const int maxn = 1e7 + 5;int n;struct node{ int op; int ed;} edge[maxn];int root[maxn];int num[maxn];int Find(int x){ return root[x] == x ? x : root[x] = Find(root[x]);}int main(){ while(~scanf("%d", & n)) { for(int i = 0; i < n; i ++) scanf("%d %d", & edge[i].op, & edge[i].ed); for(int i = 1; i < maxn; i ++) //初始化 { root[i] = i; //所有的root与下标相等(即根节点是自己本身) num[i] = 1; //所有的数量为1 } for(int i = 0; i < n; i ++) { int x = Find(edge[i].op); int y = Find(edge[i].ed); if(x != y) { root[y] = x; //不断连接(y的根节点是x) num[x] += num[y]; //不断将叶节点的数量累加到根节点 } } int num_max = 1; for(int i = 1; i < maxn; i ++) if(num[i] > num[num_max]) num_max = i; //找最大数量 printf("%d\n", num[num_max]); } return 0;}
题意:
王老师要找一些男生帮助他完成一项工程。要求最后挑选出的男生之间都是朋友关系,可以说直接的,也可以是间接地。问最多可以挑选出几个男生(最少挑一个)。
题解:
(摘自LYHVOYAGE)这是一个有关并查集的题目。只不过不是求有几个集合,而是求每个集合中元素的个数,进而求出个数的最大值。和求集合个数的方法差不多,只需要在合并两个集合时处理一下,让这两个集合的元素个数也合并一下就行了。接下来只需要找出最大值即可。
0 0
- 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
- HDU 1856 More is better
- hdu 1856 More is better
- hdu-1856 More is better
- 使用CLI获取EBS的总使用大小
- Android5.1 Telephony流程分析——拨打电话流程(MO CALL)
- postgresql 的自动增量字段
- activemq接收到的消息为空
- OpenGL 在Win7(32)上配置开发环境流程及注意问题
- HDU-1856 More is better
- muduo网络库源码学习————互斥锁
- 可滑动关闭的对话框(二)
- J2SE配置问题—;expected错误总结
- 结构体成员内部含有一级指针和二级指针的情况
- UI22_动画
- 【网络流之最大流】POJ1273-Drainage Ditche【模板题】
- CentOS系统下的Hadoop集群(第8期)_HDFS初探之旅
- POJ 2187 Beauty Contest(凸包 + 旋转卡壳)