题目链接:https://vjudge.net/contest/271361#problem/E

具体思路:运用并查集,每一次连接上一个点,更新他的父亲节点,如果父亲节点相同,则构不成树,因为入读是2,然后再去遍历每一个点的父亲节点,判断一下祖宗节点有几个,只有1个才能构成树,注意0 0也是树.。。

AC代码:

  1. #include<iostream>
  2. #include<stack>
  3. #include<queue>
  4. #include<iomanip>
  5. #include<stdio.h>
  6. #include<algorithm>
  7. #include<string>
  8. #include<cstring>
  9. #include<cmath>
  10. #include<map>
  11. using namespace std;
  12. # define inf 0x3f3f3f3f
  13. # define maxn
  14. int father[maxn];
  15. int vis[maxn];
  16. int k;
  17. map<int,int>q;
  18. int Find(int t)
  19. {
  20. return t==father[t]?t:father[t]=Find(father[t]);
  21. }
  22. void match(int t1,int t2)
  23. {
  24. int x=Find(t1);
  25. int y=Find(t2);
  26. if(x!=y)
  27. {
  28. father[y]=x;
  29. return ;
  30. }
  31. else
  32. k=;
  33. }
  34. int main()
  35. {
  36. int x,y;
  37. int num=;
  38. while(~scanf("%d %d",&x,&y))
  39. {
  40. q.clear();
  41. k=;
  42. if(x==-&&y==-)break;
  43. memset(vis,,sizeof(vis));
  44. if(x==&&y==)
  45. {
  46. printf("Case %d is a tree.\n",++num);
  47. continue;
  48. }
  49. for(int i=; i<=maxn; i++)
  50. {
  51. father[i]=i;
  52. }
  53. vis[x]=;
  54. vis[y]=;
  55. match(x,y);
  56. while(~scanf("%d%d",&x,&y))
  57. {
  58. if(x==&&y==)break;
  59. match(x,y);
  60. vis[x]=;
  61. vis[y]=;
  62. }
  63. if(k==)printf("Case %d is not a tree.\n",++num);
  64. else
  65. {
  66. int flag=;
  67. for(int i=; i<=maxn; i++)
  68. {
  69. if(vis[i])
  70. {
  71. int temp=Find(i);
  72. q[temp]=;
  73. }
  74. }
  75. if(q.size()==) printf("Case %d is a tree.\n",++num);
  76. else printf("Case %d is not a tree.\n",++num);
  77. }
  78. }
  79. return ;
  80. }

 

E - Is It A Tree? 并查集判断是否为树的更多相关文章

  1. POJ-1308 Is It A Tree?(并查集判断是否是树)

    http://poj.org/problem?id=1308 Description A tree is a well-known data structure that is either empt ...

  2. hdu--1878--欧拉回路(并查集判断连通,欧拉回路模板题)

     题目链接 /* 模板题-------判断欧拉回路 欧拉路径,无向图 1判断是否为连通图, 2判断奇点的个数为0 */ #include <iostream> #include <c ...

  3. 【bzoj4399】魔法少女LJJ 并查集+权值线段树合并

    题目描述 在森林中见过会动的树,在沙漠中见过会动的仙人掌过后,魔法少女LJJ已经觉得自己见过世界上的所有稀奇古怪的事情了LJJ感叹道“这里真是个迷人的绿色世界,空气清新.淡雅,到处散发着醉人的奶浆味: ...

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

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

  5. HDU - 5438 Ponds(拓扑排序删点+并查集判断连通分量)

    题目: 给出一个无向图,将图中度数小于等于1的点删掉,并删掉与他相连的点,直到不能在删为止,然后判断图中的各个连通分量,如果这个连通分量里边的点的个数是奇数,就把这些点的权值求和. 思路: 先用拓扑排 ...

  6. P1197 [JSOI2008]星球大战(并查集判断连通块+正难则反)

    P1197 [JSOI2008]星球大战(并查集判断连通块+正难则反) 并查集本来就是连一对不同父亲的节点就的话连通块就少一个. 题目描述 很久以前,在一个遥远的星系,一个黑暗的帝国靠着它的超级武器统 ...

  7. Hdu.1325.Is It A Tree?(并查集)

    Is It A Tree? Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) To ...

  8. Is It A Tree?(并查集)

    Is It A Tree? Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 26002   Accepted: 8879 De ...

  9. CF109 C. Lucky Tree 并查集

    Petya loves lucky numbers. We all know that lucky numbers are the positive integers whose decimal re ...

随机推荐

  1. php伪静态配置

    配置虚拟主机和伪静态 1.开启Apache的rewrite模块 LoadModule rewrite_module modules/mod_rewrite.so 2.开启虚拟主机功能 # Virtua ...

  2. jmeter 兼容bug 记录一笔

    这个问题我也遇到过,然后网上搜到了这篇文章! 先说下问题: 我在做性能测试时,使用JMeter搞了100个并发,以100TPS的压力压测十分钟,但压力一直出现波动,而且出现波动时JMeter十分卡,如 ...

  3. 一张图看懂css的position里的relative和absolute的区别

    position有以下属性:static.inherit.fixed.absolute.relative前三个好理解好区分:static:是默认状态,没有定位,元素出现在正常的流中(忽略 top, b ...

  4. 【Visual Installer】如何注册自已的文件类型

    一.前言 这几天在做公司软件产品的安装包,产品有一个特定的后缀名为:.isbimqs,需要的功能是双击该后缀名文件后,会有一个启动程序launchRevit.exe去打开Revit,由Revit去打开 ...

  5. 【BZOJ4540】【HNOI2016】序列(莫队)

    [BZOJ4540][HNOI2016]序列(莫队) 题面 BZOJ 洛谷 Description 给定长度为n的序列:a1,a2,-,an,记为a[1:n].类似地,a[l:r](1≤l≤r≤N)是 ...

  6. Linux正确的关机方式

    本人还未入门,仅看书所得. Linux不建议的是直接关电源.Linux后台可能有多人在工作,直接关电源可能造成文件的毁坏. 正常关机之前应该干两件事:一.查看一下谁在线:二.通知一下别人啦,通知别人可 ...

  7. [POJ1094] Sorting It All Out

    link 题目大意 给出$m$个不等式关系,问可以从第几个开始确定所有之间的大小关系.若无解请输出是无法确定还是与已知矛盾. 试题分析 这题是真的是坑啊,尽然放在$floyd$传到闭包上面,还用二分, ...

  8. 【agc003E】Sequential operations on Sequence

    Portal -->agc003E Description 给你一个数串\(S\),一开始的时候\(S=\{1,2,3,...,n\}\),现在要对其进行\(m\)次操作,每次操作给定一个\(a ...

  9. Python3 字典 get() 方法

     Python3 字典 描述 Python 字典 get() 函数返回指定键的值,如果值不在字典中返回默认值. 语法 get()方法语法: dict.get(key, default=None) 参数 ...

  10. db2 数据库操作JDBC .addBatch() 方法执行时,报错排查结果

    今天调试db2数据的存储时,jdbc使用addBatch方法时,抛出异常,异常信息如下: [jcc][1091][10404][3.62.56] 数据转换无效:参数实例  对于所请求的转换无效. ER ...