下课铃声响起,机房里的两位女生从座位上站起来。(下面用 X1,X2 代指两人)
X2:省选前的集训真难熬啊……听课、考试、讲评、补题 —— 对于现在的我来说,即使在梦里想到一道数据结构题,也会不由自主地开始思考吧。
X1:重复训练对我来说似乎并不是什么负担,但我确实感觉到解决题目带来的愉悦感在最近逐渐减弱了。也许我们需要一些精神上的“刺激”:一些不拘泥于繁复技术的智力游戏,来让我们找回对于数学和算法的兴趣。
X2:咦,我好像收到了一封用英文写的短信,似乎是……数学书上的一些片段。
题目描述
X1:我来翻译一下短信的内容。
定义:本文所述的树是归纳定义的:单独的结点构成一棵树,以一棵树作为左(或右)孩子可以构成一棵树,以两棵树分别作为左、右孩子也可以构成一棵树。仅由以上规则用有限步生成的所有结构被称为树。
X2:也就是说,这里所说的树是指非空、有根、区分左右孩子的二叉树。
X1:的确如此。接下来书上定义了两棵树的同构。
定义:称两棵树
同构,记作 ,由以下四条规则定义:
- 由单独结点构成的树是彼此同构的;
- 如果两棵树的根结点均只有左子树,并且它们的左子树同构,那么这两棵树是同构的;
- 如果两棵树的根结点均只有右子树,并且它们的右子树同构,那么这两棵树是同构的;
- 如果两棵树的根结点均有左、右子树,并且它们的左、右子树分别对应同构,那么这两棵树是同构的。
很明显,同构关系构成了所有树上的一个等价关系。为了方便,我们将同构的树看作相同的树。
X2:将同构的树看成相同的树就是说树的结点是彼此相同的。简单地说,两棵树同构当且仅当他们在结点无标号、区分左右孩子的意义下相同;我们说两棵树不同,当且仅当它们不同构。
X1:书里还定义了树的叶子:和通常的定义一样,叶子指没有任何孩子的结点。
X2:这和我们熟悉的定义完全一致。嘛,数学家真是有点啰嗦……恐怕只有 X3 那种家伙会喜欢这种做派吧。
X1:我倒是对此不太反感——比起基于经验的“直觉”,准确的定义和严谨的证明还是更加让人安心。你看,下一个定义就没有那么直观了。
定义:称一棵树
单步替换成为 ,如果将 的某一叶子结点替换为另一棵树 得到的树与 同构,记做 ;称一棵树 替换成为 ,记做 ,如果存在自然数 和树 ,使得 。
X2:我来想想……所谓替换,就是删掉某个叶子结点并在对应的位置放入另一棵树,就像那个叶子结点“长出了”一个更大的子树一样;一棵树替换成为另一棵树,说明它可以经由零次、一次或多次单步替换得到那棵树。哦……我明白了!举例来说,任何一棵树都可以替换成它本身,换言之对于树
X1:你说得对。特别地,任何一棵树都可以替换得到无穷多棵不同的树,并且仅有一个结点构成的树可以替换得到任意其他的树。书上也有定义这样的东西。
定义:对于一棵树
,定义 表示 所能替换构成的树的集合,即 。更近一步,如果 是一个树的有限集合,定义 为所有 的并集,其中 。即
X2:我们把
X1:让我来补充一下:我们称一个树林是几乎完备的(或称几乎包含了所有的树),如果仅有有限多的树不在其中。对于一个有限树林
定理(几乎完备的可判定性):一个树的集合是几乎完备的,如果仅有有限棵树不在其中。那么,对于一个给定的树的有限集合
,存在高效的算法判定 是否是几乎完备的。
X2:这个问题变成一个纯粹的 OI 题目了!让我用我们的语言来重述一下题意:给定一个有限大小的树林
X1:也就是说,给定一个有限的树的集合
X2:我也一样,不过我很久没有感受到这种解决未知问题的冲动了。
输出格式
本题有多组测试数据,输入文件的第一行包含一个正整数
第一行是一个正整数
- 首先是一个正整数
,表示树中的结点个数,结点编号为 ; - 接下来
行每行两个非负整数,其中第 行从左到右包含用空格隔开的 和 ,分别表示 号结点左、右孩子结点的编号。如果左(或右)孩子不存在,那么 (或 )为 。当然,叶结点一定满足 。 - 输入数据保证构成一棵以
号结点作为根结点的树。请注意:结点的编号只是为了方便输入,任何同构的树都被视为是相同的。
所输入的
输出格式
输出包含 Almost Complete
;否则输出 No
。请注意输出字符串的拼写和大小写。
样例一
input
1 1 1 0 0
output
Almost Complete
explanation
这一样例仅包含一组测试数据,其中树的集合
样例二
input
1 3 3 2 3 0 0 0 0 2 2 0 0 0 2 0 2 0 0
output
Almost Complete
explanation
这一样例仅包含一组测试数据,其中树的集合
样例三
input
1 2 3 2 3 0 0 0 0 2 2 0 0 0
output
No
explanation
这一样例仅包含一组测试数据,其中树的集合
样例四
见样例数据下载。
样例五
见样例数据下载。
样例六
见样例数据下载。
数据范围
全部数据满足:
特殊性质:下面是下表中会涉及的四种特殊性质的解释。
- 特殊性质 1:对于这一测试点中的每一组测试数据,都有
,即树的集合中包括不超过 棵树; - 特殊性质 2:对于这一测试点中的每一组测试数据,树的集合中所有的树具有相同的高度;
- 特殊性质 3:对于这一测试点中的每一组测试数据,树的集合仅包含链(换言之,每个非叶结点仅包含一个孩子);
- 特殊性质 4:对于这一测试点中的每一组测试数据,树的集合仅包含满足以下两个条件之一的树:
- 每个非叶结点仅包含一个孩子;
- 恰好有两个叶结点,它们具有相同的父结点,并且除这三个结点外,其余结点均有且仅有一个孩子。
每个测试点的具体限制见下表:
测试点编号 | 特殊性质 | ||||
---|---|---|---|---|---|
1 | 无 | ||||
2 | 性质 1 | ||||
3 | |||||
4 | 无 | ||||
5 | 性质 2 | ||||
6 | 无 | ||||
7 | 性质 2 | ||||
8 | 无 | ||||
9 | 性质 3 | ||||
10 | 性质 4 | ||||
11 | |||||
12 | |||||
13 | |||||
14 | 无 | ||||
15 | |||||
16 | |||||
17 | |||||
18 | |||||
19 | |||||
20 | |||||
21 | |||||
22 | |||||
23 | |||||
24 | |||||
25 |
时间限制:
空间限制: