Description
给定一棵 $n\ (1 \leq n \leq 10^5)$ 个点的带权树,求树上最长的异或和路径。$(0 \leq 边权 < 2^{31})$
Source
Solution
$a,b$ 的树上路径异或和其实就是 $a$ 到根的路径异或和 与 $b$ 到根的路径异或和 的异或值。原因是:根据异或运算的性质 $x \oplus x = 0$ 可知,两个点到根重复的路径会互相抵消为 $0$,对答案不影响。
所以我们可以先用 搜索 求出每个点到根的路径异或和,然后把这些值插入到 Trie 中,从中选出两点使其异或和最大,这就和另外一题 [LOJ]10050 一样了,不会的话自行阅读,这里不再赘述过程。
Code
1 |
|