atcoder#ABC267F. [ABC267F] Exactly K Steps

[ABC267F] Exactly K Steps

配点 : 500500

問題文

NN 頂点の木が与えられます。頂点には 1,,N1, \dots, N の番号が付けられており、i(1iN1)i \, (1 \leq i \leq N - 1) 番目の辺は頂点 Ai,BiA_i, B_i を結びます。

この木における頂点 u,vu, v距離を、頂点 uu から頂点 vv までの最短パス上にある辺の本数と定義します。

QQ 個のクエリが与えられます。i(1iQ)i \, (1 \leq i \leq Q) 番目のクエリでは、整数 Ui,KiU_i, K_i が与えられるので、頂点 UiU_i からの距離がちょうど KiK_i であるような頂点の番号を任意に一つ出力してください。そのような頂点が存在しない場合は、-1 を出力してください。

制約

  • 2N2×1052 \leq N \leq 2 \times 10^5
  • 1Ai<BiN(1iN1)1 \leq A_i \lt B_i \leq N \, (1 \leq i \leq N - 1)
  • 与えられるグラフは木
  • 1Q2×1051 \leq Q \leq 2 \times 10^5
  • 1Ui,KiN(1iQ)1 \leq U_i, K_i \leq N \, (1 \leq i \leq Q)
  • 入力は全て整数

入力

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

NN

A1A_1 B1B_1

\vdots

AN1A_{N-1} BN1B_{N-1}

QQ

U1U_1 K1K_1

\vdots

UQU_Q KQK_Q

出力

QQ 行出力せよ。i(1iQ)i \, (1 \leq i \leq Q) 行目には、頂点 UiU_i からの距離がちょうど KiK_i である頂点が存在するならその一例を、存在しないなら -1 を出力せよ。そのような頂点が複数存在する場合、どれを出力しても正解となる。

5
1 2
2 3
3 4
3 5
3
2 2
5 3
3 3
4
1
-1
  • 頂点 22 からの距離がちょうど 22 であるのは頂点 4,54, 5 の二つです。
  • 頂点 55 からの距離がちょうど 33 であるのは頂点 11 のみです。
  • 頂点 33 からの距離がちょうど 33 である頂点は存在しません。
10
1 2
2 3
3 5
2 8
3 4
4 6
4 9
5 7
9 10
5
1 1
2 2
3 3
4 4
5 5
2
4
10
-1
-1