#44044. 最长路径

    ID: 44044 传统题 1000ms 256MiB 尝试: 0 已通过: 0 难度: (无) 上传者: 标签>最近公共祖先树的直径提高T3魔扣OJ

最长路径

暂无测试数据。

小精灵 Ciro 和小恶魔 Cori 都住在同一棵大树上。这是一棵有根树,点的编号 $1$ 到 $n$,其中点 $1$ 是根节点,点 $u$($u\ge2$)的父节点是 $f_u$(不保证 $f_u<u$)。定义两个点之间的距离为两点之间的最短路径上的边数。Cori 每次见到 Ciro 时都会对 Ciro 做一些恶作剧,因此 Ciro 不愿意与 Cori 见面,希望离 Cori 越远越好。

Ciro 最近学会了一个神奇的魔法,能够感知到 Cori 的大致位置,但由于 Ciro 的魔力还不够强,只能感知到 Cori 在以点 $v$ 为根的子树内,但不能感知到 Cori 到底在哪个点上(当然,如果以 $v$ 为根的子树只有 $v$ 这一个点,可以推断出 Cori 的位置也只能在 $v$)。现在 Ciro 在点 $u$,他打算移动到以 $u$ 为根的子树中的某一点来躲避 Cori,使得他们之间的距离尽量大。Ciro 是一个乐观主义者,他想知道最好情况下他们之间的距离的最大值(即从以 $u,v$ 为根的子树中各选一点,使得两点的距离最大,求这个最大值)。Ciro 会进行 $q$ 次询问,每次询问给出 $u,v$,你需要对每一个询问都作出回答。

输入格式

第一行,一个正整数 $n$。

第二行,$n-1$ 个正整数 $f_2,\ldots,f_n$,不保证 $f_u<u$,但保证是一个有根树。

第三行,一个正整数 $q$。

接下来 $q$ 行,每行两个正整数 $u,v$,保证 $1\le u,v\le n$。

输出格式

$q$ 行,每行一个非负整数表示每次询问的答案。

数据范围

对于所有数据,$1\le n,q\le 500000$。

各测试点的详细信息如下表:

#$n=$$q=$
1$100$$1000$
2$300$$1000$
3$500$$1000$
4$1000$$6000$
5$3000$$6000$
6$5000$$6000$
7$100000$$100000$
8$300000$$300000$
9$500000$$500000$
10$500000$$500000$
6
1 1 2 2 4
4
1 1
2 3
1 4
1 5
4
4
4
3