单点时限: 4.0 sec
内存限制: 1024 MB
Cuber QQ 有一棵 $n$ 个结点的有根树,树根是 $1$ 号节点,树上每个节点有一个点权 $a_{i}$。
对于树上的两个节点 $u,v (u\neq v)$, 若他们为祖先后代关系,则会产生一个新的价值,而且价值是 $value_{(u,v)} = a_v \oplus a_u$ 。
现在 Cuber QQ 想知道树上前 $k$ 大的价值。
输入数据第一行包含两个整数 $n,k$ ($2 \le n \le 5 \times 10^{5},1 \le k \le \min(\sum_{v}dep_v - 1, 5\times 10^{5})$) 。
接下来 $n-1$ 行,每行两个整数 $u,v$,表示树上的一条边。
接下来 $n$ 行,第 $i$ 行代表 $i$ 号点的权值 $a_i$ ($1 \le a_i \le 2^{31} - 1$)。
输出包含 $k$ 行,表示前 $k$ 大的异或值,从大到小依次输出。
3 2 1 2 1 3 1 2 4
5 3