筑波大学プログラミングコンテスト2023
コンテスト日時
2023/09/03 (Su) 14:00 - 17:00

H - Chase

Flavor
4
s
1024
MB
700

問題文

NN 頂点の木が与えられます。
木の頂点には 11 から NN までの番号がつけられています。また、 ii 番目の辺は頂点 uiu_i と頂点 viv_i を双方向に結んでおり、長さは DiD_i です。
この木の上には人が NN 人暮らしており、最初、各頂点 ii に人 ii が立っています。

これから TT 日の間、次のような移動が発生します。

  • ii 日目には、人 PiP_i が人 QiQ_i に向かって、最短距離で ViV_i だけ移動する。

各移動後の人 PiP_i の位置を出力形式に従って出力してください。
頂点の上ではなく辺の途中で移動を終える可能性があることに注意してください。

与えられるテストケースについて、 ii 日目の移動前の状態で人 PiP_i と人 QiQ_i の間の距離は ViV_i 以上であることが保証されています。

部分点

  1. (300300 点) Di=1D_i = 1
  2. (400400 点) 追加の制約なし

制約

  • 1N5×1041 \leq N \leq 5 \times 10^4
  • 1ui<viN1 \leq u_i \lt v_i \leq N
  • 1Di1091 \leq D_i \leq 10^9
  • 1T5×1041 \leq T \leq 5 \times 10^4
  • 1Pi,QiN1 \leq P_i, Q_i \leq N
  • 1Vi1091 \leq V_i \leq 10^9
  • PiQiP_i \neq Q_i
  • 入力はすべて整数である
  • 与えられるグラフは木である
  • ii 日目の移動前の状態で、人 PiP_i と人 QiQ_i の間の距離は ViV_i 以上である

入力

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

NN
u1u_1 v1v_1 D1D_1
u2u_2 v2v_2 D2D_2
\vdots
uN1u_{N-1} vN1v_{N-1} DN1D_{N-1}
TT
P1P_1 Q1Q_1 V1V_1
P2P_2 Q2Q_2 V2V_2
\vdots
PTP_T QTQ_T VTV_T

出力

TT 行出力せよ。ii 行目には、 ii 日目の移動後の人 PiP_i の位置を出力せよ。

PiP_i が頂点 xx の上にいる場合は 1 x を、
yy 番目の辺の途中にいる場合は、人 PiP_i の位置から頂点 uyu_y までの距離を dd として、 2 y d を出力せよ。

入力例 1
6 1 2 1 1 5 1 2 3 1 2 4 1 4 6 1 3 5 2 1 3 6 3 5 3 2
出力例 1
1 1 1 6 1 4

この入力は部分点の制約を満たす。

入力例 2
9 1 4 10 2 7 4 1 8 20 1 9 14 6 8 20 3 5 2 1 2 2 2 5 4 4 9 3 15 6 4 20 2 6 20 1 2 5
出力例 2
2 7 1 1 8 2 3 18 2 3 5