给定一棵树,我们定义树中两个节点A、B的最近公共祖先C为:
1、C既在A到根的路径上,又在B到根的路径上。
2、C离根的距离最远。
如下图:
节点4、5的最近公共祖先是8;节点9、6的最近公共祖先是8;节点7、11的最近公共祖先是4。
Input
输入包含多组测试数据。
首先第一行输入一个数T(T<=20),表示总共有T组测试数据。
接下来是每组测试数据,第一行是一个数N(N<=200),表示树中一共有N个点。接下来N-1行,每行两个数A、B,表示A是B的父亲。
然后是一个数M(M<=1000),表示一共有M个查询,接下来每个查询有两个数A、B,表示询问A和B的最近公共祖先。
Output
首先,输出Case #X:其中X代表是第X组数据(具体格式参照样例)。
然后对每次查询,输出A和B的最近公共祖先。
Sample Input
2
2
1 2
1
1 2
3
1 2
1 3
2
1 2
2 3
Sample Output
Case #1:
1
Case #2:
1
1
|