思路:

对于每一条新的边的两个端点,是否是属于一颗树,要是的话,就不是一颗树。否则,就合并。

这里要注意的是,不能是森林,我这里WA了两次了。只不过在最后,查看每个节点的祖先是否是同一个就可以了。

  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <algorithm>
  4.  
  5. using namespace std;
  6.  
  7. const int maxn = ;
  8.  
  9. int father[maxn];
  10. bool vis[maxn];
  11.  
  12. int Find_set(int x)
  13. {
  14. if(x!=father[x])
  15. father[x]=Find_set(father[x]);
  16. return father[x];
  17. }
  18.  
  19. void Union(int x,int y)
  20. {
  21. father[y] = x;
  22. }
  23.  
  24. int main()
  25. {
  26. bool flag;
  27. int x,y;
  28. int t=;
  29. while(scanf("%d%d",&x,&y),x!=-)
  30. {
  31. flag=true;
  32. if(x==&&y==)
  33. {
  34. printf("Case %d is a tree.\n",++t);
  35. continue;
  36. }
  37.  
  38. else {
  39. for(int i=;i<maxn;i++)
  40. {
  41. father[i] = i;
  42. vis[i] = false;
  43. }
  44.  
  45. int first = x;
  46. vis[x]=vis[y]=true;
  47. if(Find_set(x)==Find_set(y))
  48. flag=false;
  49. else Union(x,y);
  50.  
  51. while(scanf("%d%d",&x,&y),x!=)
  52. {
  53. vis[x]=vis[y]=true;
  54. int fx=Find_set(x);
  55. int fy=Find_set(y);
  56. if(fx==fy)
  57. flag=false;
  58. else Union(fx,fy);
  59. }
  60. for(int i=;i<maxn;i++)
  61. {
  62. if(vis[i]&&Find_set(first)!=Find_set(i))
  63. {
  64. flag=false;
  65. break;
  66. }
  67. }
  68. if(flag)
  69. printf("Case %d is a tree.\n",++t);
  70. else printf("Case %d is not a tree.\n",++t);
  71.  
  72. }
  73.  
  74. }
  75. return ;
  76. }

并查集,是否成树,Poj(1308)的更多相关文章

  1. 并查集判树 poj 1308

    例题: poj 1308 题目大意比较简单,对任意两个点,有且仅有一条道路,也就是一棵树. 题解:一棵树中,肯定是不能有环的,而且只能由一个根节点.(没认真读题,只知道在那里判环....),所以这个题 ...

  2. POJ 1308&&HDU 1272 并查集判断图

      HDU 1272 I - 小希的迷宫 Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64 ...

  3. (并查集)POJ 1308 & HDU 1325

    一开始以为两道题是一样的,POJ的过了直接用相同代码把HDU的交了,结果就悲剧了.最后发现HDU的没有考虑入度不能大于一. 题意:用树的定义来 判断吧,无环,n个结点最多有n-1条边,不然就会有环.只 ...

  4. POJ 1308/并查集

    题目链接 /* 判断一棵树: * 1.There is exactly one node, called the root, to which no directed edges point. * 2 ...

  5. Is It A Tree? POJ - 1308(并查集判树)

    Problem Description A tree is a well-known data structure that is either empty (null, void, nothing) ...

  6. poj 并查集

    http://poj.org/problem?id=1611 水题 题意:就是找一共有多少个人感染了,0是感染学生的编号. #include <stdio.h> #include < ...

  7. [并查集] POJ 1703 Find them, Catch them

    Find them, Catch them Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 43132   Accepted: ...

  8. [并查集] POJ 2236 Wireless Network

    Wireless Network Time Limit: 10000MS   Memory Limit: 65536K Total Submissions: 25022   Accepted: 103 ...

  9. poj 1797(并查集)

    http://poj.org/problem?id=1797 题意:就是从第一个城市运货到第n个城市,最多可以一次运多少货. 输入的意思分别为从哪个城市到哪个城市,以及这条路最多可以运多少货物. 思路 ...

随机推荐

  1. 设置Linux shell超时自动退出

    Linux shell,一般默认情况下是不会超时退出的,但是有的时候我们想要让它在多少分钟后没有操作自动退出终端(听起来有点像windows多少分钟后自动锁屏一样).我们可以通过设置来实现这一功能. ...

  2. Python 内置的GUI库tkinter方法在py2和py3中的更改

    参考资料:   https://docs.python.org/3.4/library/tkinter.html#tkinter-moduleshttps://docs.python.org/2.7/ ...

  3. thinkPHP Model的操作

    1.建立一个表 create table Demo( -> id int, ), -> age int, ) -> ); 2.新增数据 2.1面向过程的风格 $d = $a-> ...

  4. LBS开发

    功能:用户发送自动的位置,返回周围的厕所信息 思路:根据用户的经纬度信息,调用百度地图的api,查询周围的厕所位置并且返回! 步骤:进入百度地图官网注册账号,选择web api接入 我们先看开发者文档 ...

  5. java——链表映射 LinkedListMap

    好像也不是基于链表来实现的,而是采用与链表类似的节点形式重新定义了一个节点内部类,以此来实现映射 public class LinkedListMap<K, V> implements M ...

  6. 安装NetCDF及HDF5

    平台信息 Description: CentOS Linux release 7.6.1810 (Core) 安装步骤 下载NetCDF.HDF5.zlib.curl[使用wget命令即可] 解包:t ...

  7. 性能测试工具LoadRunner20-LR之Controller Service-Level Agreement(服务水平协议)

    SLA是为负载测试场景定义的具体目标.例如,评测脚本中任意数量事务的平均响应时间,可以定义具体的目标或阈值.测试运行结束之后,LR将你定义的目标与实际录制的平均事务响应时间进行比较.如果实际的平均事务 ...

  8. 《nginx 五》nginx实现动静分离

    Nginx+Tomcat动静分离 动态页面与静态页面区别 静态资源: 当用户多次访问这个资源,资源的源代码永远不会改变的资源. 动态资源:当用户多次访问这个资源,资源的源代码可能会发送改变. 什么是动 ...

  9. sqlldr 采集中文数据乱码问题

    测试机上装入数据 发现中文字段全部变成???????,初步判断为字符集问题    更改      UPDATE sys.props$      SET VALUE$='WE8ISO8859P1'    ...

  10. C#天气预报程序

    首先要引用这个服务,http://www.webxml.com.cn/Webservices/WeatherWebService.asmx 出现对话框后,把中央气象的服务网址添加到里面 选择高级, 添 ...