#4448. 树
树
题目描述
现在有一棵个点的树,这是一个真正的树,因为每过一天它便会生长一次。 具体而言,每过一天,这棵树的叶子节点就会长出和一模一样的子树,即第天的树是将的所有叶子替换成而形成的。
而树上节点的标号则是由这棵树的dfs序来决定的,即dfs序的第个节点标号便是。
现在这棵树已经生长了天,而你需要回答组询问,每次询问两个节点的最短距离。
输入格式
输入第一行共一个整数,表示的节点数。
接下来一行共个整数,第个整数表示在中,号节点的父亲是(节点编号为),其中每个节点儿子从左到右的顺序恰好为儿子编号从小到大的顺序。
接下来一行共两个整数,意义如题面所示。
接下来行,每行共两个整数,表示询问的最短距离。
输出格式
对于每个询问输出一个整数,表示的最短距离。
10
0 1 2 3 2 1 2 3 2
0 5
1 5
2 9
5 8
2 6
2 10
4
2
3
3
1
10
0 1 2 3 2 1 2 3 2
2 5
10 20
15 16
89 99
12 98
100 1
4
2
9
16
10
提示
对于 20% 的数据, 。
对于 40% 的数据, 。
对于 100% 的数据,
注意,当时,输入所给的节点之间的连边关系只表示树的形态,不代表最终点的编号。
Related
In following contests: