链接:POJ - 3764 The xor-longest Path
题意:
给出一棵 n ( 1 ≤ n ≤ 100000 ) n(1\le n\le100000) n(1≤n≤100000)个结点的树,每条边具有边权 w ( 0 ≤ w ≤ 2 31 ) w(0\le w\le 2^{31}) w(0≤w≤231),结点编号从 0 0 0到 n − 1 n-1 n−1。要求求出 异或和最大的路径(即路径上所有边权 w w w异或和最大),所有结点均可作为起点、终点。
分析:
由于异或的性质,其实只需要 任选一点作为根结点,如上图的 A A A,然后 DFS算得所有其他点到A点的异或和 s u m A − X sum_{A-X} sumA−X 即可。
那么则有,任意两个点路径上的异或和 s u m X − Y = s u m A − X ⊕ s u m A − Y sum_{X-Y}=sum_{A-X}\oplus sum_{A-Y} sumX−Y=sumA−X⊕sumA−Y
因为异或时,相同部分的路径边权 w w w相同,异或得 0 0 0,不相同部分相互异或,最后与 0 0 0异或,不变。
例如 求 F F F到 J J J路径上的边权异或和 s u m F − J sum_{F-J} sumF−J<