#13. 最近公共祖先
最近公共祖先
Description
一棵树如下图所示,每个节点都标有{,,···,}的整数,节点是树根。若节点位于根和之间的路径中,则x是y的祖先,节点也是自己的祖先。、、和是的祖先,、、和是的祖先。若是的祖先和的祖先,则被称为和的公共祖先,因此和是和的公共祖先。若是和的公共祖先并且在它们的公共祖先中最接近和,则被称为和的最近公共祖先,和的最近公共祖先是.若是的祖先,则和的最近公共祖先是,和的最近公共祖先是.编写一个程序,找到树中两个不同节点的最近公共祖先。
Format
Input
第行包含一个整数,表示测试用例的数量。
每个测试用例的第行都包含整数,表示树中的节点数。节点用标记。
接下来的行,每行都包含一对表示边的整数,第个整数是第个整数的父节点(有个节点的树则恰好有条边)。
每个测试用例的最后一行都包含两个不同的整数,求其最近公共祖先。
Output
对每个测试用例,都单行输出两个节点的最近公共祖先。
Samples
2
16
1 14
8 5
10 16
5 9
4 6
8 4
4 10
1 13
6 15
10 11
6 7
10 2
16 3
8 1
16 12
16 7
5
2 3
3 4
3 1
1 5
3 5
4
3