CF983E NN country
题目描述
在 NN 国,有 $n$ 个城市,编号从 $1$ 到 $n$,以及 $n-1$ 条道路连接这些城市。任意两个城市之间都存在一条道路路径。
有 $m$ 条双向公交线路连接城市。公交车在两座城市之间行驶,沿最短路径经过并在途经的每个城市停靠。乘坐公交车时,你可以从该线路上的任意一站前往任意其他一站。你只能通过公交车在城市间旅行。
你感兴趣的是 $q$ 个问题:是否可以从一个城市到达另一个城市,以及为此最少需要乘坐多少辆公交车?
输入格式
第一行包含一个整数 $n$($2 \le n \le 2 \cdot 10^5$)——城市数量。
第二行包含 $n-1$ 个整数 $p_2, p_3, \ldots, p_n$($1 \le p_i < i$),其中 $p_i$ 表示城市 $p_i$ 和 $i$ 之间有一条道路连接。
第三行包含一个整数 $m$($1 \le m \le 2 \cdot 10^5$)——公交线路数量。
接下来的 $m$ 行,每行包含两个整数 $a$ 和 $b$($1 \le a, b \le n$,$a \neq b$),表示有一条公交线路连接城市 $a$ 和 $b$。两座城市之间可能有多条线路。
下一行包含一个整数 $q$($1 \le q \le 2 \cdot 10^5$)——你感兴趣的问题数量。
接下来的 $q$ 行,每行包含两个整数 $v$ 和 $u$($1 \le v, u \le n$,$v \neq u$),表示你想知道是否可以从城市 $v$ 到达城市 $u$,以及最少需要乘坐多少辆公交车。
输出格式
对于每个问题,输出一行答案。如果无法从一个城市到达另一个城市,输出 $-1$。否则输出你必须乘坐的最少公交车数量。
说明/提示

第一组样例的公交线路如图所示。
由 ChatGPT 4.1 翻译