atcoder#APC001F. XOR Tree

XOR Tree

配点 : 10001000

問題文

NN 頂点の木が与えられます。頂点には 00 から N1N-1 の番号がついています。 辺は 11 から N1N-1 までの番号がついていて、辺 ii は頂点 xix_iyiy_i をつなぎ、また aia_i という値を保持しています。 あなたは以下の操作を何回でもすることが出来ます:

  • ある単純pathとある非負整数 xx を選び、そのpathを構成する各辺 ee について、 aeaexa_e \gets a_e \oplus x (⊕ は xor)と変化させる。

目標はすべての辺 ee について ae=0a_e = 0 とすることです。 目標を達成するために必要な最小の操作回数を求めてください。

制約

  • 2N1052 \leq N \leq 10^5
  • 0xi,yiN10 \leq x_i,y_i \leq N-1
  • 0ai150 \leq a_i \leq 15
  • 与えられるグラフは木
  • 入力は全て整数

入力

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

NN

x1x_1 y1y_1 a1a_1

x2x_2 y2y_2 a2a_2

::

xN1x_{N-1} yN1y_{N-1} aN1a_{N-1}

出力

目標を達成するために必要な操作回数の最小値を出力せよ。

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

以下のようにして三回で目標を達成できます。

  • まず、頂点 1,21,2 を結ぶ path に対して x=1x=1 で操作する
  • 次に、頂点 2,32,3 を結ぶ path に対して x=2x=2 で操作する
  • 最後に、頂点 0,40,4 を結ぶ path に対して x=4x=4 で操作する
2
1 0 0
0