#P1308. Is It A Tree?
Is It A Tree?
题目描述
树是一种广为人知的数据结构,它要么为空(空集、无、不存在),要么是由一个或多个节点组成的集合,这些节点通过满足以下属性的有向边相互连接:
- 恰好存在一个节点,称为根节点,没有有向边指向它。
- 除根节点外的每个节点都恰好有一条边指向它。
- 从根节点到每个节点都存在唯一的有向边序列。
例如,考虑下面的图示,其中节点用圆圈表示,边用带箭头的线条表示。下面前两个图示是树,而最后一个不是。
在这个问题中,你将得到几个由有向边连接的节点集合的描述。对于每个描述,你需要判断该集合是否满足树的定义。
输入
输入将由一系列的描述(测试用例)组成,后面跟着一对负整数。每个测试用例将由一系列的边描述组成,后面跟着一对零。每条边描述将由一对整数组成;第一个整数标识边的起始节点,第二个整数标识边所指向的节点。节点编号总是大于零。
输出
对于每个测试用例,显示一行内容:“Case k is a tree.”(第个用例是一棵树) 或 “Case k is not a tree.”(第个用例不是一棵树),其中对应于测试用例的编号(它们从开始按顺序编号)。
输入示例
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
输出示例
Case 1 is a tree.
Case 2 is a tree.
Case 3 is not a tree.
来源
1997年北美中北部地区竞赛