题目:给你一些有向边(端点,长度为1)。推断给定的图是否是一棵树。

分析:图论。并查集。树是一个全部点都连接的有向无环图(不连接的是森林)。

依照树的定义推断是否有环就可以,有环分成两种:

1.链状环;2.存在节点有多个父亲节点;

这两种情况,仅仅要用并查集在合并前推断是否数以一个集合就可以,

假设在统一集合中,这条边一定形成环;

注意推断不能是森林。

说明:╮(╯▽╰)╭又是一个没有数据范围的题目。

#include <iostream>
#include <cstdlib>
#include <cstdio> using namespace std; int used[100001];
int sets[100001],rank[100001]; int set_root(int a)
{
if (a != sets[a])
sets[a] = set_root(sets[a]);
return sets[a];
} int main()
{
int a,b,t = 1;
while (~scanf("%d%d",&a,&b) && a >= 0 && b >= 0) {
for (int i = 0 ; i < 100000 ; ++ i) {
sets[i] = i;
used[i] = rank[i] = 0;
}
int flag = 1;
while (a||b) {
if (set_root(a) == set_root(b))
flag = 0;
if (flag) {
used[a] = used[b] = 1;
sets[set_root(b)] = set_root(a);
}
scanf("%d%d",&a,&b);
} if (flag == 1) {
int count = 0;
for (int i = 0 ; i < 100000 ; ++ i)
if (used[i] && set_root(i) == i)
if (count ++) {
flag = 0;
break;
}
} if (flag == 0)
printf("Case %d is not a tree.\n",t ++);
else printf("Case %d is a tree.\n",t ++);
} return 0;
}

UVa 615 - Is It A Tree?的更多相关文章

  1. uva 10228 - Star not a Tree?(模拟退火)

    题目链接:uva 10228 - Star not a Tree? 题目大意:给定若干个点,求费马点(距离全部点的距离和最小的点) 解题思路:模拟退火算法,每次向周围尝试性的移动步长,假设发现更长处, ...

  2. uva 11922 Permutation Transforme/splay tree

    原题链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=18902 伸展树的区间翻转剪切... 如下: #include< ...

  3. uva 10304 - Optimal Binary Search Tree 区间dp

    题目链接 给n个数, 这n个数的值是从小到大的, 给出个n个数的出现次数. 然后用他们组成一个bst.访问每一个数的代价是这个点的深度*这个点访问的次数. 问你代价最小值是多少. 区间dp的时候, 如 ...

  4. UVA 10304 Optimal Binary Search Tree

    简单区间DP. #include<cstdio> #include<cstring> #include<cmath> #include<vector> ...

  5. UVA Planning mobile robot on Tree树上的机器人(状态压缩+bfs)

    用(x,s)表示一个状态,x表示机器人的位置,s表示其他位置有没有物体.用个fa数组和act数组记录和打印路径,转移的时候判断一下是不是机器人在动. #include<bits/stdc++.h ...

  6. UVa 112 - Tree Summing(树的各路径求和,递归)

    题目来源:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=3&pa ...

  7. uva 1556 - Disk Tree(特里)

    题目连接:uva 1556 - Disk Tree 题目大意:给出N个文件夹关系,然后依照字典序输出整个文件文件夹. 解题思路:以每一个文件夹名作为字符建立一个字典树就可以,每一个节点的关系能够用ma ...

  8. UVA 1264 - Binary Search Tree(BST+计数)

    UVA 1264 - Binary Search Tree 题目链接 题意:给定一个序列,插入二叉排序树,问有多少中序列插入后和这个树是同样的(包含原序列) 思路:先建树,然后dfs一遍,对于一个子树 ...

  9. UVA.548 Tree(二叉树 DFS)

    UVA.548 Tree(二叉树 DFS) 题意分析 给出一棵树的中序遍历和后序遍历,从所有叶子节点中找到一个使得其到根节点的权值最小.若有多个,输出叶子节点本身权值小的那个节点. 先递归建树,然后D ...

随机推荐

  1. CCF试题:高速公路(Targin)

    问题描述 某国有n个城市,为了使得城市间的交通更便利,该国国王打算在城市之间修一些高速公路,由于经费限制,国王打算第一阶段先在部分城市之间修一些单向的高速公路. 现在,大臣们帮国王拟了一个修高速公路的 ...

  2. ubuntu 软件包(package)更换源(source)为阿里云镜像 update&upgrade

    在ubuntu下用apt-get install安装软件时,发现package list中没有所需的软件, 估计可能是package list太旧了,于是需要apt-get update & ...

  3. hdu5823

    官方题解:直接状压dp就行了,f[S]表示点集S的色数,枚举子集转移(子集是独立集).这样是3^n的. 这样就可以过了……(独立集就是点互相没有连边) 学到了一个穷举子集的简便写法 for (int ...

  4. 前端读者 | 百度前端编码规范(HTML)

    本文来自:百度FEX 1 前言 HTML 作为描述网页结构的超文本标记语言,在百度一直有着广泛的应用.本文档的目标是使 HTML 代码风格保持一致,容易被理解和被维护. 2 代码风格 2.1 缩进与换 ...

  5. 【剑指offer】面试题 17. 打印从 1 到最大的 n 位数

    面试题 17. 打印从 1 到最大的 n 位数 题目描述 题目:输入数字 n,按顺序打印出从 1 最大的 n 位十进制数.比如输入 3,则打印出 1.2.3 一直到最大的 3 位数即 999. 解答过 ...

  6. 论文笔记-RCNN

    CAFFE玩了也有段时间了,现在开始准备研究一下物体检测,现在知道的有RCNN.spp-net.Fast-RCNN和Faster-RCNN,作为菜鸟我还是从头学习,决定先看RCNN,因为有项目要做还要 ...

  7. 【我要学python】愣头青之小数点精度控制

    写在最前面:今天遇到了棘手的问题,看了两遍才看懂,本文属于转载+修改,原出处是Herbert's Blog 基础 浮点数是用机器上浮点数的本机双精度(64 bit)表示的.提供大约17位的精度和范围从 ...

  8. HDU 6118 2017百度之星初赛B 度度熊的交易计划(费用流)

    度度熊的交易计划 Time Limit: 12000/6000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total S ...

  9. Section One

    1.1.1 #include <iostream> using namespace std; int main() { int a,b,N; cin >> N; while ( ...

  10. Codeforces #447 Div.2 Tutorial

    Problem A:QAQ 给一个字符串,求出可非连续的QAQ序列有多少个. Analysis:比较水的一道题,记录每一个Q的位置,预处理A的个数即可 然而还是fst了,原因是未考虑一个Q都没有的极端 ...