POJ题目网址:http://poj.org/problem?id=1308

HDU题目网址:http://acm.hdu.edu.cn/showproblem.php?pid=1272

并查集的运用,如果想要形成一棵树,那么我们应该只能有一个根,并查集联合次数为节点数-1。

  1. //Asimple
  2. //#include <bits/stdc++.h>
  3. #include <iostream>
  4. #include <sstream>
  5. #include <algorithm>
  6. #include <cstring>
  7. #include <cstdio>
  8. #include <vector>
  9. #include <cctype>
  10. #include <cstdlib>
  11. #include <stack>
  12. #include <cmath>
  13. #include <set>
  14. #include <map>
  15. #include <string>
  16. #include <queue>
  17. #include <limits.h>
  18. #include <time.h>
  19. #define INF 0xfffffff
  20. #define mod 10007
  21. #define swap(a,b,t) t = a, a = b, b = t
  22. #define CLS(a, v) memset(a, v, sizeof(a))
  23. #define debug(a) cout << #a << " = " << a <<endl
  24. #define abs(x) x<0?-x:x
  25. using namespace std;
  26. typedef long long ll;
  27. const int maxn = ;
  28. int fa[maxn];
  29. //int re[maxn];
  30. int n, m, T, x, y, num, len;
  31. set<int> s;
  32. bool f;
  33.  
  34. void init() {
  35. for(int i=; i<maxn; i++) fa[i] = i;
  36. f = false;
  37. len = ;
  38. s.clear();
  39. }
  40.  
  41. int find(int x) {
  42. return fa[x]==x?x:fa[x]=find(fa[x]);
  43. }
  44.  
  45. void make_set(int x, int y) {
  46. if( x==y ) f = true;
  47. x = find(x);
  48. y = find(y);
  49. if( x!=y ){
  50. fa[x] = y;
  51. len ++;
  52. } else f = true;
  53. }
  54.  
  55. void solve() {
  56.  
  57. }
  58.  
  59. void input() {
  60. int cas = ;
  61. while( true ) {
  62. init();
  63. cin >> x >> y;
  64. if( x == && y == ) {
  65. // cout << "Case "<< cas++ <<" ";
  66. // puts("is a tree.");
  67. puts("Yes");
  68. continue;
  69. }
  70. if( x==- && y==- ) break;
  71. s.insert(x);
  72. s.insert(y);
  73. make_set(x, y);
  74. while( cin >> x >> y ) {
  75. if( x== && y == ) break;
  76. s.insert(x);
  77. s.insert(y);
  78. make_set(x, y);
  79. }
  80. // cout << "Case "<< cas++ <<" ";
  81. if( len+ == s.size() && !f ) puts("Yes");
  82. else puts("No");
  83. }
  84. }
  85.  
  86. int main() {
  87. input();
  88. return ;
  89. }

POJ 1308 Is It A Tree?和HDU 1272 小希的迷宫的更多相关文章

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

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

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

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

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

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

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

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

  5. HDU - 1272 小希的迷宫 【并查集】

    题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=1272 思路 只需要判断 这张图 无环 并且只有一个连通块 就可以了 要注意 如果 只输入 0 0 那给 ...

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

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

  7. hdu 1272 小希的迷宫

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

  8. HDU 1272 小希的迷宫(并查集)

    题解: 首先,init,find,union操作都是模版,多敲几遍,在记记,就没问题了. 然后,本题就是多了一个flag数组,记录数据是否出现过,最后记录最小,和最大,遍历一般他们的父亲,只有一个就是 ...

  9. HDU 1272 小希的迷宫 (水题)

    题意: 其实就是让你判断一个图是否为树,要求不能有孤立的点(没有这中情况),且只能有1个连通图,且边数+1=点数,且每个点都有边(不可能只有1个点出现). 思路: 有可能出现连续的4个0,也就是有测试 ...

随机推荐

  1. linux中cmake语法的学习

    在linux 下进行开发很多人选择编写makefile 文件进行项目环境搭建,而makefile 文件依赖关系复杂,工作量很大,搞的人头很大.常常,写代码,效率才是王道.这里还有自动化的项目构建工具C ...

  2. PHP适配器模式

    [IDatabase.php] <?php /** * 适配器模式 * 可以将不同的函数接口封装成统一的API * 应用举例1:数据库操作 mysql/mysqli/pdo * 应用举例2:缓存 ...

  3. Swagger Editor Linux安装(全新环境)

    查看内核版本 cat /proc/version cat /etc/redhat-release 查看系统是32位还是64位方法总结getconf LONG_BIT 安装相关工具 yum instal ...

  4. [LeetCode] 422. Valid Word Square_Easy

    Given a sequence of words, check whether it forms a valid word square. A sequence of words forms a v ...

  5. 让运行着的ASP.NET Web程序重新启动

    在运行中的Web程序,会随时的监测这web.config文件的变化,只要web.config文件有变动,那么Application就会重新启动.所以,在一个工具类中我们可以封装一个方法,该方法用来重新 ...

  6. 从零开始一起学习SLAM | 为什么要用齐次坐标?

    在涉及到计算机视觉的几何问题中,我们经常看到齐次坐标这个术语.本文介绍一下究竟为什么要用齐次坐标?使用齐次坐标到底有什么好处? 什么是齐次坐标?简单的说:齐次坐标就是在原有坐标上加上一个维度: 使用齐 ...

  7. [转帖]unity3D OnTriggerEnter和OnCollisionEnter的一点个人心得(主要讲区别)

    觉得这个讲的挺好的,就转过来了:) 太抽象的理论总是让人眼花缭乱,所以我这里以例证为主. 1,测试OnTriggerEnter和OnCollisionEnter的区别 测试:如果两个物体A,B 两者都 ...

  8. 前端 json 导出 excel

    参考:https://blog.csdn.net/abel_yang/article/details/78684786 在github上有大神提供现成的插件,非常感谢 https://cuikangj ...

  9. 安装redis脚本

    #!/bin/bash#Function: Install redis#Author: DengYong#Date: 20151126 cd /root/packagewget http://down ...

  10. caffe深度学习进行迭代的时候loss曲线开始震荡原因

    1:训练的batch_size太小 1.       当数据量足够大的时候可以适当的减小batch_size,由于数据量太大,内存不够.但盲目减少会导致无法收敛,batch_size=1时为在线学习. ...