C - Odd Even Counters Editorial /

Time Limit: 2 sec / Memory Limit: 1024 MiB

配点 : 800 点

問題文

1 から N までの番号のついた N 頂点からなる無向木があります. 辺には 1 から N-1 までの番号がついており,辺 i は頂点 A_i と頂点 B_i を結んでいます.

各辺 i には 2 つのカウンター x_i,y_i があります. 最初,x_i=y_i=0 です.

あなたは今から以下の操作を 0 回以上行います.

  • 木上のウォークを自由に選ぶ. より正確には,頂点列 (v_0,v_1,\ldots,v_k) (頂点 v_i,v_{i+1} は直接辺で結ばれており,ウォークの長さ k は任意) を選ぶ. 頂点 v_i,v_{i+1} を結ぶ辺を辺 e_i とする. そして,各 i=0,2,4,\ldots に対して,x_{e_i} の値を 1 増やす. 同様に,各 i=1,3,5,\ldots に対して,y_{e_i} の値を 1 増やす. なお,同じ辺が複数回登場する場合は,登場するたびにカウンターの値が増加する.

各辺には,目標とすべきカウンターの値 X_i,Y_i が定まっています. あなたの目標は,すべての辺でカウンターの値が (x_i,y_i)=(X_i,Y_i) となっている状態にすることです. 目標が達成可能かどうか判定してください. また可能な場合は,そのために必要な最小の操作回数を求めてください.

1 つの入力につき,T ケースを解いてください.

制約

  • 1 \leq T \leq 125000
  • 2 \leq N \leq 250000
  • 1 \leq A_i,B_i \leq N
  • 0 \leq X_i,Y_i \leq 10^9
  • 入力されるグラフは木である
  • T ケースにわたる N の総和は 250000 以下
  • 入力はすべて整数

入力

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

T
case_1
case_2
\vdots
case_T

各テストケースは以下の形式で与えられる.

N
A_1 B_1 X_1 Y_1
A_2 B_2 X_2 Y_2
\vdots
A_{N-1} B_{N-1} X_{N-1} Y_{N-1}

出力

各テストケースについて,目標を達成することが不可能なら -1 を,可能なら必要な最小の操作回数を出力せよ.


入力例 1

4
3
1 2 2 0
2 3 0 1
3
1 2 1 0
2 3 0 2
5
2 3 3 3
3 5 5 2
1 4 2 4
4 5 1 1
10
3 10 0 16306834
6 8 123600023 90587973
10 1 35502434 4326053
1 9 0 6983702
10 2 0 11702429
6 5 0 53901118
10 4 82799399 29529115
10 8 72275777 16348135
6 7 0 21602025

出力例 1

2
-1
-1
215877450

例えば,1 番目のテストケースについては,以下のように 2 回の操作を行うことで目標を達成できます.

  • ウォーク (1,2,3) を選び,x_1,y_2 の値を 1 増やす.
  • ウォーク (2,1) を選び,x_1 の値を 1 増やす.

2 番目と 3 番目のテストケースでは,どうやっても目標を達成することができません.