仍旧裸敲并查集。有这两点注意:

1.输入 0 0 时候要输出YES

2.留心数组的初始化

  1. #include <iostream>
  2. #include <cstring>
  3. #include <cstdlib>
  4. #include <cstdio>
  5. #include <numeric>
  6. #include <algorithm>
  7. #include <cctype>
  8. #include <string>
  9.  
  10. using namespace std;
  11.  
  12. const int MAXN = ;
  13.  
  14. bool flag[MAXN];
  15. int connectedList[MAXN];
  16. bool isOk = true;
  17. int nStart, nEnd;
  18.  
  19. void Init() {
  20. for (int i = ; i < MAXN; ++i) {
  21. connectedList[i] = i;
  22. flag[i] = false;
  23. }
  24. }
  25.  
  26. int getFather(int vetex) {
  27. int pos = vetex;
  28. while(pos != connectedList[pos]) {
  29. pos = connectedList[pos];
  30. }
  31. return pos;
  32. }
  33.  
  34. int countListNum() {
  35. int count = ;
  36. for (int i = ; i < MAXN; ++i) {
  37. if (flag[i] == true) {
  38. if (getFather(i) == i) {
  39. ++count;
  40. }
  41. }
  42. }
  43. return count;
  44. }
  45.  
  46. void process() {
  47. if( getFather(nStart) == getFather(nEnd)) {
  48. isOk = false;
  49. return;
  50. }
  51. if( getFather(nStart) == nStart && getFather(nEnd) == nEnd) {
  52. connectedList[nEnd] = nStart;
  53. } else if(getFather(nStart) == nStart) {
  54. connectedList[nStart] = getFather(nEnd);
  55. } else {
  56. connectedList[nEnd] = getFather(nStart);
  57. }
  58. flag[nStart] = true;
  59. flag[nEnd] = true;
  60. }
  61. int main() {
  62. while(cin >> nStart >> nEnd) {
  63. if(nStart == - && nEnd == -) break;
  64. if(nStart || nEnd) {
  65. isOk = true;
  66. memset(flag, false , sizeof(flag));
  67. Init();
  68. process();
  69.  
  70. while(cin >> nStart >> nEnd, nStart || nEnd) {
  71. if(isOk == true) {
  72. process();
  73. }
  74. }
  75.  
  76. if(isOk == true) {
  77. int count = ;
  78. count = countListNum();
  79. if(count > ) {
  80. isOk = false;
  81. }
  82. }
  83. } else {
  84. isOk = true;
  85. }
  86. if(isOk == false) {
  87. cout << "No" << endl;
  88. } else {
  89. cout << "Yes" << endl;
  90. }
  91. }
  92. return ;
  93. }

【HDU1272】小希的迷宫(并查集基础题)的更多相关文章

  1. hdu1272 小希的迷宫(并查集)

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

  2. HDU1272小希的迷宫–并查集

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

  3. hdu-1272 小希的迷宫---并查集或者DFS

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

  4. HDU-1272小希的迷宫,并查集?其实不用并查集;

    小希的迷宫                                                                                               ...

  5. HDU1272 小希的迷宫 并查集

    参考网址:http://blog.sina.com.cn/s/blog_6827ac4a0100nyjy.html 解题思路: 由于这里出现的数字不一定连续的数字都会出现,所以设一个mark来标记数字 ...

  6. hdu1272小希的迷宫(并查集判断回路和是否连通)

    传送门 迷宫中不能有回路,还要连通 如果最后集合数是一个那就是连通,否则不联通 要合并的两个顶点在相同集合内,表示出现了回路 输入时注意一下 #include<bits/stdc++.h> ...

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

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

  8. 【HDU1231】How Many Tables(并查集基础题)

    什么也不用说,并查集裸题,直接盲敲即可. #include <iostream> #include <cstring> #include <cstdlib> #in ...

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

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

随机推荐

  1. 在CentOS/RHEL 6.5上安装Chromium 谷歌浏览器

    之前Google就说了,由于CentOS/RHEL 6已经是过期的系统,所以不再会有Chrome了. 虽然后来由于引起了社区的抗议,从而改口,不再提CentOS/RHEL 6是过期系统了:但是,目前在 ...

  2. c语言二维数组变色龙之死字的打印

    1 #include <stdio.h> #include <stdlib.h> void main() { ][]= { {'#','#','#',' ','#','#',' ...

  3. Spring 源码解读 推荐流程

    Spring源代码解析(一):IOC容器:http://www.javaeye.com/topic/86339 Spring源代码解析(二):IoC容器在Web容器中的启动:http://www.ja ...

  4. Appium 点击Android屏幕

    用driver.tap(1, 10, 10, 800); 点击屏幕,经常提示:An unknown server-side error occurred while processing the co ...

  5. mysql 存储过程:提供查询语句并返回查询执行影响的行数

    mysql 存储过程:提供查询语句并返回查询执行影响的行数DELIMITER $$ DROP PROCEDURE IF EXISTS `p_get_select_row_number`$$ CREAT ...

  6. [RxJS] Combining Streams with CombineLatest

    Two streams often need to work together to produce the values you’ll need. This lesson shows how to ...

  7. FragmentPagerAdapter与FragmentStatePagerAdapter差异

    平常使用的FragmentPagerAdapter和FragmentStatePagerAdapter来自android.support.v4.app包用来构建ViewPager. FragmentP ...

  8. myeclipse自动补全设置

    第一步: windows -->preference -->java -->editor -->content Assist --> auto activation -- ...

  9. CSS基础知识之float

    前段时间写过一篇CSS基础知识之position,当时对float的理解不太准确,被慕课网多名读者指出(原文已修正,如有误导实在抱歉).现对float进行更深入的学习,在此把学习心得分享给大家. 浮动 ...

  10. SqlDbType与DbType这间的转换关系

    SqlDbType => DbType SqlDbType.BigInt DbType.Int64 SqlDbType.Binary DbType.Binary SqlDbType.Bit Db ...