QOJ.ac

QOJ

Límite de tiempo: 90 s Límite de memoria: 1024 MB Puntuación total: 65

#12470. 无限树

Estadísticas

本题旨在求出一棵严格二叉树中两个节点之间的距离。这棵树可能是无限的。

在本问题中,树要么是一个单独的节点,要么是一个节点加上两棵子树:左子树和右子树。在这两种情况下,$X$ 都是树的根。如果树不是一个单独的节点,那么左子树和右子树的根就是 $X$ 的仅有的两个孩子。

存在一组颜色,编号从 $0$ 到 $N$(包含 $0$ 和 $N$)。每个节点恰好有一种颜色。每种颜色可能有零个、一个或多个节点。颜色 $0$(白色)的每个节点都是叶子节点(即它没有孩子)。对于 $1 \le i \le N$,颜色 $i$ 的每个节点恰好有两个孩子:左孩子颜色为 $L_i$,右孩子颜色为 $R_i$。树的根颜色为 $1$(黑色)。注意,这棵树可能包含有限个或可数无限个节点。

例如,下图展示了一个由列表 $L = [3, 0, 0]$ 和 $R = [2, 0, 2]$ 定义的有限树。颜色 $2$ 是蓝色,颜色 $3$ 是黄色。

树中两个节点之间的距离是到达对方所需的最少步数。一步是指从一个节点移动到其直接父节点或直接子节点。

树中的节点使用正整数进行索引。根节点的索引为 $1$。然后,其他节点按连续整数进行索引,距离根节点较近的节点优先索引。对于到根节点距离相等的节点,更靠左的节点优先索引。例如,下图在之前展示的树的基础上为每个节点添加了索引。注意,每个节点的索引与其颜色无关。

作为另一个例子,下图展示了由列表 $L = [3, 4, 2, 4]$ 和 $R = [2, 2, 4, 0]$ 定义的无限树的前 $33$ 个节点。颜色 $4$ 是绿色。

给定定义树的列表 $L$ 和 $R$,以及树中两个不同节点的索引,返回这两个节点之间的距离。

输入格式

输入的第一行包含测试用例的数量 $T$。接下来是 $T$ 个测试用例。每个测试用例包含三行。第一行包含 $N$、$A$ 和 $B$:定义树的列表大小,以及需要计算距离的两个节点的索引。第二行包含 $N$ 个整数 $L_1, L_2, \dots, L_N$,第三行包含 $N$ 个整数 $R_1, R_2, \dots, R_N$。

输出格式

对于每个测试用例,输出一行 Case #x: y,其中 $x$ 是测试用例编号(从 $1$ 开始),$y$ 是由列表 $L$ 和 $R$ 定义的树中索引为 $A$ 和 $B$ 的节点之间的距离。

数据范围

$1 \le T \le 100$。 $1 \le N \le 50$。 $0 \le L_i \le N$。 $0 \le R_i \le N$。 $A < B \le 10^{18}$。 由 $L$ 和 $R$ 定义的树至少有 $B$ 个节点。

子任务

测试集 1(可见判定) $A = 1$。

测试集 2(隐藏判定) $1 \le A \le 10^{18}$。

样例

样例输入 1

5
3 1 8
3 0 0
2 0 2
3 1 5
3 0 0
2 0 2
4 1 27
3 4 2 4
2 2 4 0
4 1 28
3 4 2 4
2 2 4 0
3 1 10
1 3 1
3 2 1

样例输出 1

Case #1: 3
Case #2: 2
Case #3: 4
Case #4: 5
Case #5: 3

说明

样例 #1 和 #2 中的树是题目描述中展示的第一棵树。样例 #3 和 #4 中的树是题目描述中展示的最后一棵树。对于下方的附加样例同样适用。在样例 #5 中,请注意某些颜色可能不会出现在树中。

附加样例 - 测试集 2

以下附加样例符合测试集 2 的限制。它不会在提交的解决方案中运行。

样例输入 2

4
3 5 7
3 0 0
2 0 2
3 4 9
3 0 0
2 0 2
4 11 18
3 4 2 4
2 2 4 0
4 21 22
3 4 2 4
2 2 4 0

样例输出 2

Case #1: 4
Case #2: 3
Case #3: 5
Case #4: 8

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.