atcoder#ABC294G. [ABC294G] Distance Queries on a Tree

[ABC294G] Distance Queries on a Tree

配点 : 600600

問題文

NN 頂点の木 TT が与えられます。 辺 ii (1iN1)(1\leq i\leq N-1) は頂点 uiu _ iviv _ i を結んでおり、重みは wiw _ i です。

次の 22 種類のクエリが合計 QQ 個与えられるので、順に処理してください。

  • 1 i w:辺 ii の重みを ww に変更する。
  • 2 u v:頂点 uu と頂点 vv の距離を出力する。

ただし、木の 22 頂点 u,vu,v の距離とは、uuvv を両端点とするパスに含まれる辺の重みの合計として得られる値のうち最小のものです。

制約

  • 1N2×1051\leq N\leq 2\times10^5
  • 1ui,viN (1iN1)1\leq u _ i,v _ i\leq N\ (1\leq i\leq N-1)
  • 1wi109 (1iN1)1\leq w _ i\leq 10^9\ (1\leq i\leq N-1)
  • 与えられるグラフは木
  • 1Q2×1051\leq Q\leq 2\times10^5
  • 11 番目の形式のクエリについて、- 1iN11\leq i\leq N-1
    • 1w1091\leq w\leq 10^9
  • 1iN11\leq i\leq N-1
  • 1w1091\leq w\leq 10^9
  • 22 番目の形式のクエリについて、- 1u,vN1\leq u,v\leq N
  • 1u,vN1\leq u,v\leq N
  • 22 番目の形式のクエリが 11 つ以上存在する
  • 入力はすべて整数

入力

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

NN

u1u _ 1 v1v _ 1 w1w _ 1

u2u _ 2 v2v _ 2 w2w _ 2

\vdots

uN1u _ {N-1} vN1v _ {N-1} wN1w _ {N-1}

QQ

query1\operatorname{query} _ 1

query2\operatorname{query} _ 2

\vdots

queryQ\operatorname{query} _ Q

ただし、queryi\operatorname{query} _ iii 個目のクエリを表しており、次の形式のいずれかで与えられる。

11 ii ww

22 uu vv

出力

22 番目の形式のクエリの個数を qq 個として qq 行出力せよ。 jj 行目 (1jq)(1\leq j\leq q) には、22 番目の形式のクエリのうち jj 個目のものに対する答えを出力せよ。

5
1 2 3
1 3 6
1 4 9
4 5 10
4
2 2 3
2 1 5
1 3 1
2 1 5
9
19
11

木ははじめ、下の図のようになっています。

各クエリでは、以下のような処理を行います。

  • 11 つめのクエリでは、頂点 22 と頂点 33 の距離を出力します。辺 11 と辺 22 をこの順に使うことで重みの合計が 99 であるようなパスが得られ、これが最小なので 99 を出力します。
  • 22 つめのクエリでは、頂点 11 と頂点 55 の距離を出力します。辺 33 と辺 44 をこの順に使うことで重みの合計が 1919 であるようなパスが得られ、これが最小なので 1919 を出力します。
  • 33 つめのクエリでは、辺 33 の重みを 11 に変更します。
  • 44 つめのクエリでは、頂点 11 と頂点 55 の距離を出力します。辺 33 と辺 44 をこの順に使うことで重みの合計が 1111 であるようなパスが得られ、これが最小なので 1111 を出力します。
7
1 2 1000000000
2 3 1000000000
3 4 1000000000
4 5 1000000000
5 6 1000000000
6 7 1000000000
3
2 1 6
1 1 294967296
2 1 6
5000000000
4294967296

答えが 32bit32\operatorname{bit} 整数に収まらない場合があることに注意してください。

1
1
2 1 1
0
8
1 2 105
1 3 103
2 4 105
2 5 100
5 6 101
3 7 106
3 8 100
18
2 2 8
2 3 6
1 4 108
2 3 4
2 3 5
2 5 5
2 3 1
2 4 3
1 1 107
2 3 1
2 7 6
2 3 8
2 1 5
2 7 6
2 4 7
2 1 7
2 5 3
2 8 6
308
409
313
316
0
103
313
103
525
100
215
525
421
209
318
519