题目:给你一些有向边(端点,长度为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. 关于多属性查找问题的sphinx解决方案

    需求描述 mysql中,每一个文档都有多个标签,查询时可以筛选一个标签也可以筛选同时拥有多个标签的文档. 数据示例 文档 标签 1 1,2,3,4,5 2 2,3,4,5,6 3 3,4,5,6,7 ...

  2. hdu多校 2

    ... 后面四个小时都在挂机很难受. 1010 裸的逆序对 //#pragma comment(linker, "/stack:200000000") //#pragma GCC ...

  3. OpenStack 认证服务 KeyStone连接和用户管理(五)

    一) 创建环境变量链接keyston vim adminrc export OS_USERNAME=admin export OS_PASSWORD=redhat export OS_PROJECT_ ...

  4. Ubuntu 18.04安装 Sublime

    作为一款强大的源代码编辑器,当然需要一手流利的命令来安装它. 命令: wget -qO - https://download.sublimetext.com/sublimehq-pub.gpg | s ...

  5. 【ASP.NET MVC】HTML5+MVC上传文件显示进度

    head> <title>Index</title> <style type="text/css"> #statusBorder { po ...

  6. [jquery] input值发生变化则触发

    $("#a").val("你好").trigger("change"); $("#a").bind("chan ...

  7. WAR/EAR 概念

    In J2EE application, modules are packaged as EAR, JAR and WAR based on their functionality JAR: EJB ...

  8. [BZOJ2159]Crash的文明世界(斯特林数+树形DP)

    题意:给定一棵树,求$S(i)=\sum_{j=1}^{n}dist(i,j)^k$.题解:根据斯特林数反演得到:$n^m=\sum_{i=0}^{n}C(n,i)\times i!\times S( ...

  9. luogu 6月月赛 E 「数学」约数个数和

    题面在这里! 第一眼感觉炒鸡水啊...只要把N质因数分解一下,因为k次约数相当于求k+2元一次方程的非负整数解,所以答案就是和每个质因子指数有关的一些组合数乘起来. 但是要用pillard's rho ...

  10. 【带权并查集】Gym - 100923H - Por Costel and the Match

    裸题. 看之前的模版讲解吧,这里不再赘述了. #include<cstdio> #include<cstring> using namespace std; int fa[10 ...