题意:

题目给你一组单向边,当遇到输入0 0就证明这是一组边,当遇到-1 -1就要停止程序。让你判断这是不是一棵树

题解:

题目很简单,但是程序要考虑的很多

1、因为是一颗树,所以肯定不能出现环,这个可以用并查集来判断

2、边数量+1==节点数量

3、每一个点的入度不能大于1(例如边a->b,这个b点的入度就要加1)

代码:

 1 #include<stdio.h>
2 #include<string.h>
3 #include<iostream>
4 #include<algorithm>
5 #include<queue>
6 #include<map>
7 #include<vector>
8 #include<math.h>
9 #define mem(a,x) memset(a,x,sizeof(a))
10 using namespace std;
11 typedef long long ll;
12 const int maxn=120000+10;
13 const int mod=26;
14 const int INF=0x3f3f3f3f;
15 const int Times = 10;
16 const int N = 5500;
17 int v[maxn],vis[maxn],sum[maxn];
18 int flag=0;
19 int finds(int x)
20 {
21 if(x!=v[x])
22 {
23 int y=finds(v[x]);
24 return v[x]=y;
25 }
26 return x;
27 }
28 void join(int a,int b)
29 {
30 int fa=finds(a),fb=finds(b);
31 if(fa!=fb)
32 v[fa]=fb;
33 else
34 flag=1;
35 }
36 int main()
37 {
38 int a,b,p=1,edge;
39 while(scanf("%d%d",&a,&b))
40 {
41 flag=0;
42 edge=0;
43 for(int i=1; i<maxn; i++)
44 {
45 v[i]=i;
46 }
47 memset(vis,0,sizeof(vis));
48 memset(sum,0,sizeof(sum));
49 if(a<0&&b<0)
50 break;
51 if(a==0&&b==0)
52 {
53 printf("Case %d is a tree.\n",p);
54 p++;
55 continue;
56 }
57 vis[a]=vis[b]=1;
58 join(a,b);
59 sum[b]++;
60 edge++;
61 while(scanf("%d%d",&a,&b))
62 {
63 if(a==0&&b==0)
64 break;
65 join(a,b);
66 vis[a]=vis[b]=1;
67 sum[b]++;
68 edge++;
69 }
70 if(flag==1)
71 {
72 printf("Case %d is not a tree.\n",p++);
73 }
74 else
75 {
76 int flagg=0,node=0;
77 for(int i=1; i<maxn; i++)
78 {
79 if(vis[i]==1)
80 node++;
81 if(sum[i]>1)
82 flagg=1;
83 }
84 if(node==(edge+1)&&flagg==0)
85 {
86 printf("Case %d is a tree.\n",p++);
87 }
88 else
89 {
90 printf("Case %d is not a tree.\n",p++);
91 }
92 }
93 }
94 }

Is It A Tree? POJ - 1308的更多相关文章

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

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

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

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

  3. 并查集判树 poj 1308

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

  4. 杭电 1272 POJ 1308 小希的迷宫

    这道题是我学了并查集过后做的第三个题,教我们的学姐说这是并查集的基础题,所以有必要牢牢掌握. 下面就我做这道题的经验,给大家一些建议吧!当然,我的建议不是最好的,还请各位大神指出我的错误来,我也好改正 ...

  5. Apple Tree POJ - 2486

    Apple Tree POJ - 2486 题目大意:一棵点带权有根树,根节点为1.从根节点出发,走k步,求能收集的最大权值和. 树形dp.复杂度可能是O(玄学),不会超过$O(nk^2)$.(反正这 ...

  6. E - Apple Tree POJ - 2486

    E - Apple Tree POJ - 2486 Wshxzt is a lovely girl. She likes apple very much. One day HX takes her t ...

  7. POJ 1308 Is It A Tree?和HDU 1272 小希的迷宫

    POJ题目网址:http://poj.org/problem?id=1308 HDU题目网址:http://acm.hdu.edu.cn/showproblem.php?pid=1272 并查集的运用 ...

  8. HDU 1325,POJ 1308 Is It A Tree

    HDU认为1>2,3>2不是树,POJ认为是,而Virtual Judge上引用的是POJ数据这就是唯一的区别....(因为这个瞎折腾了半天) 此题因为是为了熟悉并查集而刷,其实想了下其实 ...

  9. hdu 1325 && poj 1308 Is It A Tree?(并查集)

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

随机推荐

  1. 【Linux】rsync中sending incremental file list时间优化

    每次使用rsync的时候,前面出现sending incremental file list 这句之后要等待很长时间 查了很多帖子和官方文档后,发现是-c这个选项的问题, -v, --verbose ...

  2. kubernets之节点和网络的安全保障策略

    一  在pod中使用宿主节点的命名空间 1.1  在pod中使用宿主的网络命名空间 [root@node01 Chapter13]# cat pod-with-host-network.yml api ...

  3. ctfhub技能树—文件上传—双写后缀

    双写后缀绕过 用于只将文件后缀名,例如"php"字符串过滤的场合: 例如:上传时将Burpsuite截获的数据包中文件名[evil.php]改为[evil.pphphp],那么过滤 ...

  4. Spring Initializr中生成的mvnw是干吗的?

    当我们使用Spring Initializr来创建Spring Boot工程的时候,有没有发现在工程根目录下有两个名为mvnw的文件: 从命名.图标.扩展名来猜测,这两个文件的作用应该是一样的,只是c ...

  5. Java并发组件二之CyclicBarriar

    使用场景: 多个线程相互等待,直到都满足条件之后,才能执行后续的操作.CyclicBarrier描述的是各个线程之间相互等待的关系. 使用步骤: 正常实例化:CyclicBarrier sCyclic ...

  6. logging philosophy 日志哲学

    Go kit - Frequently asked questions https://gokit.io/faq/ Logging - Why is package log so different? ...

  7. java面向对象(二)构造函数和构造代码块

    面向对象 类成员 1.成员变量 属性 数值类型的基本数据类型默认值是 0 成员变量在任何方法中都能访问,和声明先后没有关系 2.成员函数 方法 3.定义方式 class 类名{成员变量:成员函数} / ...

  8. 服务注册发现与注册中心对比-Eureka,Consul,Zookeeper,Nacos对比

    服务注册发现与注册中心对比-Eureka,Consul,Zookeeper,Nacos对比 注册中心简介 流程和原理 基础流程 核心功能 1.Eureka.Consul.Zookeeper三者异同点 ...

  9. Java8新特性_四大内置核心函数式接口

    Consumner : 消费型接口 Supplier :供给型接口 Function:函数式接口 Predicate:断言型接口 其他接口: 四大内置核心函数式接口: Consumner : 消费型接 ...

  10. jQuery实战笔记

    文章目录 1.标签隐藏显示 2.时间戳转换 3.radio单选框获取选中 4.判断字符串是否为数字类型 5.tab标签页实现 6.标签点击事件 7.jquery跳转链接 8.jquery修改图片url ...