题目大意:输入一系列的点,判断这些点组成的图符不符合小希的思路(无环、连通)

解题思路:

1)如果两个节点的根节点相同,那么在这两个节点之间添加1条边以后,这个图肯定有环路。

2)孤立节点:被使用过&&当前节点的父亲节点是自己

代码如下:

  1. /*
  2. * 1272_1.cpp
  3. *
  4. * Created on: 2013年8月23日
  5. * Author: Administrator
  6. */
  7.  
  8. #include <iostream>
  9.  
  10. using namespace std;
  11.  
  12. /**
  13. * father[i] : 用来保存当前节点的父节点
  14. * flag[i] :判断当前节点是否使用过.
  15. * ok : 判断该迷宫是否满足小希的思路
  16. */
  17. int father[100005];//不要只开到100001,否则会WA
  18. bool flag[100005];
  19. bool ok;
  20. int find(int a) {
  21. if (a == father[a]) {
  22. return a;
  23. }
  24. father[a] = find(father[a]);
  25.  
  26. return father[a];
  27. }
  28.  
  29. void join(int x, int y) {
  30. int fx = find(x);
  31. int fy = find(y);
  32.  
  33. /**
  34. * 如果两个节点n、m的根节点相同,
  35. * 那么在他们之间添加一条以后,这个图肯定出现了环路
  36. */
  37. if (fx != fy) {
  38. father[fx] = fy;
  39. } else {
  40. ok = false;
  41. }
  42. }
  43.  
  44. void make_set() {
  45. int i;
  46. for (i = 1; i <= 100001; ++i) {
  47. father[i] = i;
  48. }
  49. }
  50.  
  51. int main() {
  52. int n, m;
  53. while (scanf("%d%d", &n, &m) != EOF, n != -1) {
  54. if (n == 0) {
  55. printf("Yes\n");
  56. continue;
  57. }
  58. make_set();
  59. memset(flag, 0, sizeof(flag));
  60.  
  61. flag[n] = true;
  62. flag[m] = true;
  63. ok = true;
  64. join(n, m);
  65.  
  66. while (scanf("%d%d", &n, &m) != EOF, n != 0) {
  67. join(n, m);
  68. flag[n] = true;
  69. flag[m] = true;
  70. }
  71.  
  72. int i;
  73. int count = 0;
  74. for (i = 1; i <= 100001; ++i) {
  75. /**
  76. * 如果当前节点被使用过&&当前节点的父亲节点是他自己,
  77. * 那么这个节点就是孤立节点(除了根节点)
  78. */
  79. if (flag[i] && father[i] == i) {
  80. count++;
  81. }
  82.  
  83. }
  84.  
  85. if (count > 1) {
  86. ok = false;
  87. }
  88. if (ok) {
  89. printf("Yes\n");
  90. } else {
  91. printf("No\n");
  92. }
  93. }
  94. }

(step5.1.6)hdu 1272(小希的迷宫——并查集)的更多相关文章

  1. <hdu - 1272> 小希的迷宫 并查集问题 (注意特殊情况)

     本题链接:http://acm.hdu.edu.cn/showproblem.php?pid=1272 Problem Description: 上次Gardon的迷宫城堡小希玩了很久(见Probl ...

  2. HDU 1272 小希的迷宫 并查集

    小希的迷宫 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submi ...

  3. HDU - 1272 小希的迷宫 并查集判断无向环及连通问题 树的性质

    小希的迷宫 上次Gardon的迷宫城堡小希玩了很久(见Problem B),现在她也想设计一个迷宫让Gardon来走.但是她设计迷宫的思路不一样,首先她认为所有的通道都应该是双向连通的,就是说如果有一 ...

  4. hdu 1257 小希的迷宫 并查集

    小希的迷宫 Time Limit: 20 Sec  Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=1272 D ...

  5. HDU 1272小希的迷宫(裸并查集,要判断是否构成环,是否是连通图)

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1272 小希的迷宫 Time Limit: 2000/1000 MS (Java/Others)    ...

  6. hdu 1272 小希的迷宫(并查集+最小生成树+队列)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1272 小希的迷宫 Time Limit: 2000/1000 MS (Java/Others)     ...

  7. hdu 1272 小希的迷宫 解题报告

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1272 第二条并查集,和畅通工程的解法类似.判断小希的迷宫不符合条件,即有回路.我的做法是,在合并两个集 ...

  8. hdu 1272 小希的迷宫(java实现)

    小希的迷宫 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Subm ...

  9. hdu 1272 小希的迷宫

    小希的迷宫 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submi ...

随机推荐

  1. iOS8及以后 地图定位当前城市

    通过以下网址的步骤实现定位获取城市的功能 http://www.2cto.com/kf/201504/393312.html

  2. Color 颜色码-英文名称-十六进制-RGB对照表

      色 英文代码 形像颜色 HEX格式 RGB格式 LightPink 浅粉红 #FFB6C1 255,182,193 Pink 粉红 #FFC0CB 255,192,203 Crimson 猩红 # ...

  3. nexus5 root教程

    转载自: http://www.inexus.co/article-1280-1.html http://www.pc6.com/edu/71016.html https://download.cha ...

  4. 整型数组处理算法(八)插入(+、-、空格)完成的等式:1 2 3 4 5 6 7 8 9=N[华为面试题]

    有一个未完成的等式:1 2 3 4 5 6 7 8 9=N 当给出整数N的具体值后,请你在2,3,4,5,6,7,8,9这8个数字的每一个前面,或插入运算符号“+”,或插入一个运算符号“-”,或不插入 ...

  5. C++中的static成员

    C++中的static 成员永远是我心中的痛,记了好多次了,但是今天在项目中依然忘记了,今天写下来,方便以后不用再去Baidu.google搜索了. 在头文件中声明静态成员 static int i; ...

  6. Socket 理解

    TCP/IP要想理解socket首先得熟悉一下TCP/IP协议族, TCP/IP(Transmission Control Protocol/Internet Protocol)即传输控制协议/网间协 ...

  7. js中this的指向

    在js中this的指向对于新手来说一定是个难题,但是如果你真正理解了的话,也就没什么问题啦,下面就来讲讲this吧. JS中,this的值取决于调用的模式(调用对象),而JS中共有4种调用模式: 1. ...

  8. 关于解决方案和web文件夹放在同一目录路径错误的问题

    今天公司要做个b2b商城,下了个源码,目的是在这个基础上改,可是源码没有解决方案,于是建立了个解决方案,然后添加网站,发现解决方案和web目录位于不同目录(解决方案总是自动生成一个目录),可是我从网上 ...

  9. 什么是 Terminal

    从用户的角度来看,Terminal 是键盘和显示器的组合,也称为 TTY(电传打字机的缩写).键盘输入字符,显示器显示字符. 从进程的角度来看,终端是字符设备,可以通过 read.write.ioct ...

  10. Swift 循环、数组 字典的遍历

    import Foundation // 数组声明 var arr = [String]() // 数组循环添加项 ...{ arr.append("Item \(index)") ...