本题旨在求出一棵严格二叉树中两个节点之间的距离。这棵树可能是无限的。
在本问题中,树要么是一个单独的节点,要么是一个节点加上两棵子树:左子树和右子树。在这两种情况下,$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