hdu 1856 More is better(并查集)
来源:互联网 发布:工业机器手臂编程 编辑:程序博客网 时间:2024/05/20 14:44
题目:http://acm.hdu.edu.cn/showproblem.php?pid=1856
More is better
Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 327680/102400 K (Java/Others)Total Submission(s): 19461 Accepted Submission(s): 7167
Problem Description
Mr Wang wants some boys to help him with a project. Because the project is rather complex,the more boys come, the better it will be. Of course there are certain requirements.
Mr Wang selected a room big enough to hold the boys. The boy who are not been chosen has to leave the room immediately. There are 10000000 boys in the room numbered from 1 to 10000000 at the very beginning. After Mr Wang's selection any two of them who are still in this room should be friends (direct or indirect), or there is only one boy left. Given all the direct friend-pairs, you should decide the best way.
Mr Wang selected a room big enough to hold the boys. The boy who are not been chosen has to leave the room immediately. There are 10000000 boys in the room numbered from 1 to 10000000 at the very beginning. After Mr Wang's selection any two of them who are still in this room should be friends (direct or indirect), or there is only one boy left. Given all the direct friend-pairs, you should decide the best way.
Input
The first line of the input contains an integer n (0 ≤ n ≤ 100 000) - the number of direct friend-pairs. The following n lines each contains a pair of numbers A and B separated by a single space that suggests A and B are direct friends. (A ≠ B, 1 ≤ A, B ≤ 10000000)
Output
The output in one line contains exactly one integer equals to the maximum number of boys Mr Wang may keep.
Sample Input
41 23 45 61 641 23 45 67 8
Sample Output
分析:并查集应用,需要统计每个集合的大小,所以需要在合并的时候注意更新相应的信息。42HintA and B are friends(direct or indirect), B and C are friends(direct or indirect), then A and C are also friends(indirect). In the first sample {1,2,5,6} is the result.In the second sample {1,2},{3,4},{5,6},{7,8} are four kinds of answers.
#include <iostream>#include <cstdio>using namespace std;const int maxn=10000000;int father[maxn+1],sum[maxn+1],n; int find(int x){ if(x==father[x]) return x; return father[x]=find(father[x]);}int main(){ //freopen("cin.txt","r",stdin); int a,b,i,j; while(cin>>n){ if(n==0){ puts("1"); //or there is only one boy left continue; } for(i=1;i<=maxn;i++){ //数组越界,发生输出多了少了的怪事儿。。 father[i]=i; sum[i]=1; } int maxm=0; for(i=0;i<n;i++){ scanf("%d%d",&a,&b); maxm=max(max(a,b),maxm); int q1=find(a),q2=find(b); if(q1!=q2){ father[q1]=father[q2]; //q1 --> q2 sum[q2]+=sum[q1]; } } int res=0; for(i=1;i<=maxm;i++){ res=max(res,sum[i]); } printf("%d\n",res); } return 0;}
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(并查集基础)
- 读书笔记之UNIX环境高级编程(14)
- 数组的练习,纯原创不完美,将就看。
- uva 436 - Arbitrage (II)(暴力)
- Poj.2007 Scrambled Polygon【凸包】 2015/09/02
- Android UI之GridView
- hdu 1856 More is better(并查集)
- 超简单Centos vpn 搭建方法 只需三部,快速搭建vpn
- 开发一个安全的小网站(三)加密关键数据
- 关于Android studio 相对 eclipse 优点
- spring事务PROPAGATION_REQUIRES_NEW和PROPAGATION_NESTED区别
- Android-图片选择,压缩,上传,加载的实例 (图片选择,压缩实现 )
- 使用fragment argument
- uva 534 - Frogger(最小生成树)
- Android UI之ScrollView