No.045 C

木を頂点 を根とする根付き木とする. 頂点 間の xor 和を とする.

ここで, 任意の頂点 について を考える. の LCA を とすると,

となる. は幅優先探索であらかじめ計算しておくことができる.

あとは頂点ごとに, となる の数を数える. これは をソートしておけば二分探索で求められる. (ただし, のときは自身の頂点を含めて数えてしまうのでこの分は引いておく)

上記の数え方では をダブルカウントしているので, 最後に2で割る.