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.
 
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
4
1 2
3 4
5 6
1 6
4
1 2
3 4
5 6
7 8
 
Sample Output
4
2
Hint
A 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<stdio.h>
#define max 10000000
int per[max+100];
int num[max+100]; int find(int x)//找根节点
{
int r;
r=x;
while(r!=per[r])
{
r=per[r];
}
per[x]=r;
return r;
}
void join(int x ,int y)//连接两根节点
{
int fx=find(x);
int fy=find(y);
if(fx!=fy)
{
per[fx]=fy;
num[fy]+=num[fx];//当前根节点的元素
}
}
int main()
{
int a,b,m,n,i;
int t;
while(~scanf("%d",&t))
{
if(t==0)
{
printf("1\n");
continue;
}
for(i=1;i<=max;++i)//初始化
{
per[i]=i;
num[i]=1; //每一个节点仅仅有一个元素,自己本身
}
n=-1;//为了省时间,
while(t--)
{
scanf("%d%d",&a,&b);
if(a>n)
{
n=a;
}
if(b>n)
{
n=b;
}
join(a,b);
}
int MAX=0;
for(i=1;i<=n;++i)//在这用上
{
if(MAX<num[i]) MAX=num[i];
}
printf("%d\n",MAX);
}
return 0;
}

最新文章

  1. Nginx反向代理,负载均衡,redis session共享,keepalived高可用
  2. 一个简单的makefile
  3. Docker探索系列1之docker入门安装与操作
  4. CSDN 分糖果算法的思路和求助
  5. Windows上搭个Nginx集群环境玩玩
  6. Spark 大数据平台 Introduction part 2 coding
  7. loadrunner SQL2008
  8. phpmyadmin导出数据库为什么是php文件
  9. Linux前传——第一次写技术博客
  10. 基于basys2驱动LCDQC12864B的verilog设计图片显示
  11. Playground中格式注释语法
  12. linux - 目录、文件默认属性: umask使用
  13. 10张图带你深入理解Docker容器和镜像
  14. man termios(FreeBSD 12.0)
  15. react react-transition-group实现动画
  16. 前端开发工具icestar
  17. [Python]小百合十大爬虫
  18. Linux基础命令---mke2fs
  19. 深蓝色 --ppt
  20. 实战-130W表增加字段耗时

热门文章

  1. 洛谷9月月赛II 赛后瞎写
  2. javascript学习笔记 - 变量、作用域和内存问题
  3. 5款工具助你写出更好的Java代码
  4. Scrum基础知识图谱
  5. 【转】[重构]Primitive Obsession
  6. Linux Shell系列教程之(五)Shell字符串
  7. input最大长度限制问题
  8. socket编程-微软小兵
  9. Enable and Use Remote Commands in Windows PowerShell
  10. 浅谈MVP设计模式