转自:wutianqi http://www.wutianqi.com/?p=1069

tag:并查集

  1. #include <iostream>
  2. using namespace std;
  3.  
  4. #define MAX 10000001
  5.  
  6. // father[x]表示x的父节点
  7. int father[MAX];
  8. // rank[x]表示x的秩
  9. int rank[MAX];
  10.  
  11. // 初始化
  12. void Make_Set(int n)
  13. {
  14. for(int i=; i<=n; ++i)
  15. {
  16. father[i] = i;
  17. rank[i] = ;
  18. }
  19. }
  20.  
  21. // 查找
  22. int Find_Set(int x)
  23. {
  24. if(x != father[x])
  25. return Find_Set(father[x]);
  26. return x;
  27. }
  28.  
  29. // 合并
  30. void Union(int x, int y)
  31. {
  32. x = Find_Set(x);
  33. y = Find_Set(y);
  34. if(x == y) // x,y在同一个集合
  35. return;
  36. if(rank[x] > rank[y])
  37. {
  38. father[y] = x;
  39. rank[x] += rank[y];
  40. }
  41. else if(rank[x] < rank[y])
  42. {
  43. father[x] = y;
  44. rank[y] += rank[x];
  45. }
  46. else
  47. {
  48. father[x] = y;
  49. //rank[y]++;
  50. rank[y] += rank[x];
  51. }
  52.  
  53. }
  54.  
  55. int main()
  56. {
  57. //freopen("input.txt", "r", stdin);
  58. int a, b;
  59. int nNum;
  60. while(scanf("%d", &nNum) != EOF)
  61. {
  62. Make_Set(MAX);
  63. if(nNum==)
  64. {
  65. printf("1\n");
  66. continue;
  67. }
  68. for(int i=; i<nNum; ++i)
  69. {
  70. scanf("%d %d", &a, &b);
  71. Union(a, b);
  72. //printf("rank[%d]=%d rank[%d]=%d\n", a, rank[a], b, rank[b]);
  73. }
  74. int _max=;
  75. for(int i=; i<=MAX; ++i)
  76. //printf("%d ", rank[i]);
  77. if(_max < rank[i])
  78. _max = rank[i];
  79. printf("%d\n", _max);
  80. }
  81. return ;
  82. }

HDOJ 1856 More is better的更多相关文章

  1. 并查集(HDOJ 1856)

    并查集   英文:Disjoint Set,即“不相交集合” 将编号分别为1…N的N个对象划分为不相交集合, 在每个集合中,选择其中某个元素代表所在集合. 常见两种操作: n       合并两个集合 ...

  2. HDOJ 1856

    #include<cstdio> #include<cstdlib> typedef struct ufse *ufset; struct ufse { ]; ]; }UFS; ...

  3. hdoj 1856 More is better【求树的节点数】

    More is better Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 327680/102400 K (Java/Others) ...

  4. Hdoj 1856.More is better 题解

    Problem Description Mr Wang wants some boys to help him with a project. Because the project is rathe ...

  5. 杭电hdoj题目分类

    HDOJ 题目分类 //分类不是绝对的 //"*" 表示好题,需要多次回味 //"?"表示结论是正确的,但还停留在模块阶 段,需要理解,证明. //简单题看到就 ...

  6. HDOJ 题目分类

    HDOJ 题目分类 /* * 一:简单题 */ 1000:    入门用:1001:    用高斯求和公式要防溢出1004:1012:1013:    对9取余好了1017:1021:1027:   ...

  7. HDOJ 1009. Fat Mouse' Trade 贪心 结构体排序

    FatMouse' Trade Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) ...

  8. HDOJ 2317. Nasty Hacks 模拟水题

    Nasty Hacks Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Tota ...

  9. HDOJ 1326. Box of Bricks 纯水题

    Box of Bricks Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) To ...

随机推荐

  1. JSP_EL使用

    JSP中EL表达式的简单介绍和使用   参考资料: http://www.java3z.com/cwbwebhome/article/article8/8124.html?id=2453   http ...

  2. 网易面试题:和为n连续正数序列

    题目: 输入一个正数n,输出所有和为n连续正数序列.例如输入15,由于1+2+3+4+5=4+5+6=7+8=15,所以输出3个连续序列1-5.4-6和7-8. 继续做些题目,看到这是网易面试题,于是 ...

  3. Tomcat部署web应用的方式

    对Tomcat部署web应用的方式总结,常见的有以下四种: 1.[使用控制台部署] 访问Http://localhost:8080,并通过Tomcat Manager登录,进入部署界面即可. 2.[利 ...

  4. textarea 在光标处插入文字

    效果演示 // 欢迎访问cssfirefly.cnblogs.com html: <textarea id="text" style="width:500px;he ...

  5. struts2 type="redirect"源码解析

    首先解释一下几个名词: request.getRequestDispatcher()是请求转发,前后页面共享一个request ; response.sendRedirect()是重新定向,前后页面不 ...

  6. jQuery之$(document).ready()使用介绍

    学习jQuery的第一件事是:如果你想要一个事件运行在你的页面上,你必须在$(document).ready()里调用这个事件 学习jQuery的第一件事是:如果你想要一个事件运行在你的页面上,你必须 ...

  7. eclipse,myeclipse svn 和jadclipse 反编译插件 及安装

    插件下载链接:http://download.csdn.net/download/mmyzlinyingjie/6456785 myeclipse svn 安装: 把svn解压,然后把这个文件夹放在m ...

  8. Demo学习: Basic jQuery

    UniGUI是一套基于ExtJS的Delphi的WEB框架,它是使用ExtPascal来转化到ExtJS,ExtJS是一个跨浏览器的JavaScript库,因此UniGUI发布出来的程序可以在各种浏览 ...

  9. oracle11g关于表空间的问题

    1.oracle11g默认的块大小为8K  每个表空间里面的单个数据文件最大为32G   (2^22-1) *4k   最多可以放1024个单个文件    SQL> show parameter ...

  10. oracle中的loop与while循环

    Oracle中loop语句会先执行一次循环,然后再判断“exit when”关键字后面的条件表达式的值是true还是false,如果是true,那么将退出循环,否则继续循环. LOOP循环 语法如下l ...