atcoder#ABC301H. [ABC301Ex] Difference of Distance

[ABC301Ex] Difference of Distance

配点 : 625625

問題文

頂点には 11 から NN の番号が、辺には 11 から MM の番号がついた NN 頂点 MM 辺の連結無向グラフがあります。 辺 ii は頂点 UiU_i と頂点 ViV_i を結んでおり、重みとして整数 WiW_i が定められています。 ここで、1s,tN, st1\leq s,t \leq N,\ s\neq t に対して d(s,t)d(s,t) を以下で定義します。

  • 頂点 ss と頂点 tt を結ぶすべてのパスに対する「パス上の辺の重みの最大値」の最小値

今から与えられる QQ 個のクエリにそれぞれ答えてください。jj 番目のクエリは以下の通りです。

  • Aj,Sj,TjA_j,S_j,T_j が与えられる。辺 AjA_j の重みを 11 増やすと d(Sj,Tj)d(S_j,T_j) がいくつ変化するか求めよ。

なお、各クエリにおいて実際には辺の重みは変更しないことに注意してください。

制約

  • 2N2×1052\leq N \leq 2\times 10^5
  • N1M2×105N-1\leq M \leq 2\times 10^5
  • 1Ui,ViN1 \leq U_i,V_i \leq N
  • UiViU_i \neq V_i
  • 1WiM1 \leq W_i \leq M
  • 与えられるグラフは連結
  • 1Q2×1051\leq Q \leq 2\times 10^5
  • 1AjM1 \leq A_j \leq M
  • 1Sj,TjN1 \leq S_j,T_j \leq N
  • SjTjS_j\neq T_j
  • 入力は全て整数

入力

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

NN MM

U1U_1 V1V_1 W1W_1

\vdots

UMU_M VMV_M WMW_M

QQ

A1A_1 S1S_1 T1T_1

\vdots

AQA_Q SQS_Q TQT_Q

出力

QQ 行出力せよ。 j (1jQ)j\ (1\leq j \leq Q) 行目には、jj 番目のクエリに対する答えを出力せよ。

6 6
1 2 1
3 1 5
4 1 5
3 4 3
5 6 4
2 6 5
7
1 4 6
2 4 6
3 4 6
4 4 6
5 4 6
6 4 6
5 6 5
0
0
0
0
0
1
1

image of the given graph

上の図においては、辺の番号を黒字で、辺の重みを青字で表記しています。

11 番目から 66 番目のクエリについて説明します。

まず与えられたグラフにおける d(4,6)d(4,6) について考えます。 41264 \rightarrow 1 \rightarrow 2 \rightarrow 6 というパス上の辺の重みの最大値は 55 ですが、 これは頂点 44 と頂点 66 を結ぶパスの中での最小値であるため、d(4,6)=5d(4,6)=5 です。

次に、辺 x (1x6)x\ (1 \leq x \leq 6) の重みを 11 増やすと d(4,6)d(4,6) がいくつ変化するか考えます。 x=6x=6 のとき d(4,6)=6d(4,6)=6 となるため変化量は 11 ですが、x6x \neq 6 のときは d(4,6)=5d(4,6)=5 となるため変化量は 00 です。 たとえば x=3x=3 のとき、41264 \rightarrow 1 \rightarrow 2 \rightarrow 6 というパス上の辺の重みの最大値は 66 になりますが、 $4 \rightarrow 3 \rightarrow 1 \rightarrow 2 \rightarrow 6$ というパス上の辺の重みの最大値が 55 であるため d(4,6)d(4,6) は変わらず 55 のままです。

2 2
1 2 1
1 2 1
1
1 1 2
0

与えられるグラフは多重辺を含むこともあります。