小塔的朋友送了他一棵节点数为 n 的糖果树(1号点为根节点),树上的每个糖果都有一个颜色。
小塔吃糖果有一个习惯,他每次都会吃掉一整个子树的糖果,他喜欢与众不同,所以每次吃之前他都会把出现次数最多的颜色的糖果扔掉(可能有多个出现次数最多的颜色,此时要全部扔掉),他可以选择任意一棵子树吃掉,但他只能吃一次,因此他想知道他一次能吃到的所有糖果的颜色的异或和最大是多少(如果吃到了多个颜色相同的糖果,也需要做多次异或),你能帮帮他吗?
dfs遍历树对于每个节点,开一个数组记录子树内节点。对于每个子树进行遍历用map统计,除去最多的颜色节点,然后进行异或,取每个子树异或的最大值。 整体时间复杂度o(n^2logn)