G - Ancestor Query Editorial

Time Limit: 2 sec / Memory Limit: 1024 MB

配点 : 400400

問題文

NN 頂点の根付き木が与えられます。頂点には 11 から NN までの番号が振られており、根は頂点 11 で、頂点 i(2iN)i\,(2\leq i\leq N) の親は頂点 PiP_i です。

QQ 個の質問が与えられるので答えてください。

ii 番目の質問では整数 Xi,YiX_i, Y_i が与えられます。頂点 XiX_i は頂点 YiY_i の祖先であり、二頂点間の距離を dd とすると d2d\geq2 です。頂点 XiX_iYiY_i を結ぶパス上の頂点の番号を順に v0,v1,,vdv_0,v_1,\ldots,v_d (ただし、v0=Xi,vd=Yiv_0=X_i, v_d=Y_i)とするとき、v1v_1 を出力してください。

制約

  • 3N21053\leq N\leq 2\cdot 10^5
  • 1Pii1(2iN)1\leq P_i\leq i-1\, (2\leq i\leq N)
  • 1Q21051\leq Q\leq 2\cdot 10^5
  • 1Xi,YiN(1iQ)1\leq X_i,Y_i\leq N\, (1\leq i\leq Q)
  • 頂点 XiX_i は頂点 YiY_i の祖先 (1iQ)(1\leq i\leq Q)
  • 頂点 XiX_i と頂点 YiY_i の距離は 22 以上

入力

入力は以下の形式で標準入力から与えられます。

NN
P2P_2 P3P_3 \ldots PNP_N
QQ
X1X_1 Y1Y_1
X2X_2 Y2Y_2
\vdots
XQX_Q YQY_Q

出力

QQ 行出力してください。

i(1iQ)i\, (1\leq i\leq Q) 行目には、ii 番目の質問に対する答えを出力してください。


入力例 1Copy

Copy
7
1 1 3 3 5 5
3
1 7
3 6
3 7

出力例 1Copy

Copy
3
5
5

11 番目のクエリにおいて、(v0,v1,v2,v3)=(1,3,5,7)(v_0,v_1,v_2,v_3)=(1,3,5,7) であり、v1=3v_1=3 です。

22 番目のクエリにおいて、(v0,v1,v2)=(3,5,6)(v_0,v_1,v_2)=(3,5,6) であり、v1=5v_1=5 です。

33 番目のクエリにおいて、(v0,v1,v2)=(3,5,7)(v_0,v_1,v_2)=(3,5,7) であり、v1=5v_1=5 です。


入力例 2Copy

Copy
7
1 2 3 4 5 6
5
1 6
2 5
3 7
3 7
1 4

出力例 2Copy

Copy
2
3
4
4
2

入力例 3Copy

Copy
7
1 1 1 4 3 2
3
1 6
1 7
1 5

出力例 3Copy

Copy
3
2
4


2025-04-15 (Tue)
19:55:02 +00:00