OUPC2025 OPENコンテスト 2026/03/29 09:00 ~ 2026/03/29 14:00 5:00:00.000

C Min!? Max!? Max!? Min!? 2

問題
制限時間: 2 sec メモリ制限: 1024 MB
Min!? Max!? Max!? Min!? 2
Statement

頂点に \(1\) から \(N\) の番号が付いた \(N\) 頂点からなる単純連結無向グラフ \(G\) があります。\(G\) には重みを持つ辺が \(M\) 本あり、\(i\) 番目の辺は頂点 \(A_i\) と \(B_i\) を結ぶ重みが \(C_i\) の辺です。

単純連結無向グラフ \(G'\) に対して、\(f(G', i, j)\) を以下で定義します。

  • \(G'\) における頂点 \(i\) から 頂点 \(j\) への長さ \(1\) 以上の walk(同じ頂点・辺を複数回通ってもよい)を考えます。 walk に含まれる辺の重みを \([ w_1, w_2, ..., w_k ]\) としたとき、\(\min(w_1, w_2, ..., w_k) + \max(w_1, w_2, ..., w_k)\) としてあり得る値の最大値を \(f(G', i, j)\) と定義します。

\(Q\) 個のクエリが与えられます。

\(j\) 番目のクエリでは、\(G\) に 頂点 \(X_j\) と \(Y_j\) を結ぶ重み \(Z_j\) の辺を追加したグラフを \(G_j\) としたときの \(\min(f(G_j, V_j, 1), f(G_j, V_j, 2), ..., f(G_j, V_j, N))\) を求めてください。ただし、\(G_j\) は単純であることが保証されます。

\(1\) つの入力につき \(T\) 個のテストケースが与えられます。

Input

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

\(T\)
\(\mathrm{case}_{1}\)
\(\mathrm{case}_{2}\)
\(\vdots\)
\(\mathrm{case}_{T}\)

\(t\) 番目のテストケース \(\mathrm{case}_t\) は以下の形式で与えられます。

\(N~M\)
\(A_1~B_1~C_1\)
\(A_2~B_2~C_2\)
\(\vdots\)
\(A_M~B_M~C_M\)
\(Q\)
\(X_1~Y_1~Z_1~V_1\)
\(X_2~Y_2~Z_2~V_2\)
\(\vdots\)
\(X_Q~Y_Q~Z_Q~V_Q\)

入力は以下の制約をすべて満たします。

  • \(1 \leq T \leq 1000\)
  • \(3 \leq N \leq 2\times 10^5\)
  • \(N-1 \leq M \leq \min(2\times 10^5,\frac{N(N-1)}{2}-1)\)
  • \(1\leq Q\leq 2\times 10^5\)
  • 各入力ファイルについて、すべてのテストケースの \(N\) の総和、\(M\) の総和、\(Q\)の総和はそれぞれ \(200000\) 以下である。
  • \(1 \leq A_i \lt B_i \leq N\)
  • \(1 \leq C_i \leq 10^9\)
  • \(1 \leq X_j \lt Y_j \leq N\)
  • \(1 \leq Z_j \leq 10^9\)
  • \(1 \leq V_j \leq N\)
  • \((X_j, Y_j) \neq (A_i, B_i)\)
  • 与えられるグラフは単純連結無向グラフ
  • 入力は全て整数

Output

以下の形式で出力してください。

\(T\)
\(\mathrm{answer}_{1}\)
\(\mathrm{answer}_{2}\)
\(\vdots\)
\(\mathrm{answer}_{T}\)

\(t\) 番目のテストケースへの出力 \(\mathrm{answer}_t\) は \(Q\) 行から構成し、その中の \(q\) 行目には \(q\) 番目のクエリに対する答えを出力してください。

Scoring

以下の追加制約を満たすデータセットに正解した場合、部分点が与えられます。

  • (20点): \(Q=1\) , \(C_i \leq 2\) , \(Z_j \leq 2\)
  • (20点): \(Q=1\)
  • (60点): 追加制約はありません。

Examples

Input 1
2
3 2
1 2 1
2 3 1
1
1 3 2 1
3 2
1 2 2
2 3 2
1
1 3 1 1
Output 1
3
4
Input 2
1
4 3
1 2 3
1 3 4
1 4 5
1
2 3 6 4
Output 2
10
Input 3
1
6 6
1 2 2
1 3 4
2 4 3
3 4 2
4 5 9
4 6 2
2
5 6 2 1
3 6 4 2
Output 3
11
11

Note

1 2 3 1 1 2

上の図は、 \(1\) つ目の入力例の \(1\) つ目のテストケースにおける \(G_1\) です。赤い辺が追加された辺です。

walkとして、頂点を \(1, 3, 1\) の順に辿ることで、 \(\min(w_1,w_2,...,w_k)+\max(w_1,w_2,...,w_k)\) は \(4\) になります。また、この値を \(5\) 以上にすることはできないため、 \(f(G_1, 1, 1) = 4\) となります。

頂点を \(1, 3, 2\) の順に辿ることで、 \(\min(w_1,w_2,...,w_k)+\max(w_1,w_2,...,w_k)\) は \(3\) になります。また、この値を \(4\) 以上にすることはできないため、 \(f(G_1, 1, 2) = 3\) となります。

頂点を \(1, 3\) の順に辿ることで、\(\min(w_1,w_2,...,w_k)+\max(w_1,w_2,...,w_k)\) は \(4\) になります。また、この値を \(5\) 以上にすることはできないため、 \(f(G_1, 1, 3) = 4\) となります。

したがって、\(\min(f(G_1, 1, 1), f(G_1, 1, 2), f(G_1, 1, 3)) = 3\) です。

\(1\) つ目の入力例は \(1\) つ目の部分点制約を満たします。

\(2\) つ目の入力例は \(2\) つ目の部分点制約を満たします。