CF1824C LuoTianyi and XOR-Tree

题目描述

洛天依给你一棵树,树的每个顶点上都有一个值,树的根为顶点 $1$。 每次操作,你可以将某个顶点上的值更改为任意非负整数。 现在你需要求出,最少需要多少次操作,才能使得从根到每个叶子的路径上的所有值的按位异或(bitwise XOR)结果都为零。 $^\dagger$ 在有根树中,叶子是指恰好有一个邻居且不是根的顶点。

输入格式

第一行包含一个整数 $n$($2 \le n \le 10^5$),表示树的顶点数。 第二行包含 $n$ 个整数 $a_1, a_2, \ldots, a_n$($1 \le a_i \le 10^9$),其中第 $i$ 个数表示第 $i$ 个顶点上的值。 接下来的 $n-1$ 行描述树的边。第 $i$ 行包含两个整数 $u_i$ 和 $v_i$($1 \le u_i, v_i \le n, u_i \neq v_i$),表示一条连接顶点 $u_i$ 和 $v_i$ 的边。保证给出的边构成一棵树。

输出格式

输出一个整数,表示最少需要的操作次数。

说明/提示

第一个样例中的树如下: ![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF1824C/f5037f32236cd0c12f91d642bcd0ee6276190035.png) 如果我们将顶点 $2$ 的值改为 $3$,顶点 $5$ 的值改为 $4$,顶点 $6$ 的值改为 $6$,那么这棵树就满足要求了。 从根到叶子 $2$ 的路径的异或值为 $3 \oplus 3 = 0$。 从根到叶子 $5$ 的路径的异或值为 $4 \oplus 7 \oplus 3 = 0$。 从根到叶子 $6$ 的路径的异或值为 $6 \oplus 5 \oplus 3 = 0$。 第二个样例中的树如下: ![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF1824C/d9dc7271f6c9662a7281b9aced7a2291ed846421.png) 如果我们将顶点 $2$ 的值改为 $4$,顶点 $3$ 的值改为 $27$,顶点 $6$ 的值改为 $20$,那么这棵树就满足要求了。 从根到叶子 $6$ 的路径的异或值为 $20 \oplus 19 \oplus 7 = 0$。 从根到叶子 $8$ 的路径的异或值为 $11 \oplus 27 \oplus 4 \oplus 19 \oplus 7 = 0$。 从根到叶子 $4$ 的路径的异或值为 $16 \oplus 4 \oplus 19 \oplus 7 = 0$。 从根到叶子 $7$ 的路径的异或值为 $16 \oplus 4 \oplus 19 \oplus 7 = 0$。 第三个样例中,唯一的叶子是顶点 $4$,从根到它的路径异或值为 $1 \oplus 2 \oplus 1 \oplus 2 = 0$,因此无需更改任何值。 第四个样例中,我们可以将顶点 $1$ 的值改为 $5$,顶点 $4$ 的值改为 $0$。 这里的 $\oplus$ 表示按位异或操作。 由 ChatGPT 4.1 翻译