在一片古老的森林深处,有一棵巨大的灵树。
灵树共有 n 个节点,每个节点都储存着不同强度的“灵能值”。
随着时间推移,灵能逐渐紊乱,如果不及时净化,整棵灵树将失去力量。
净化方式很特殊:
你可以对灵树中的任意一个节点施放“灵能转换咒”。
咒语会对该节点及其全部子节点生效,使它们的灵能全部与一个整数 x 进行按位异或。
但咒语越强力,消耗越高;节点的子树越大,总消耗也越大。
你的任务是:设计最省力的净化方案,把所有节点的灵能都变成 0。
具体规则如下:
给定一棵以节点 1 为根、包含 n 个节点的树。
每个节点 i 初始灵能值为 a_i(非负整数)。
你可以进行若干次操作。一次操作为:
-
选择一个节点 u;
-
选择一个非负整数 x;
-
将节点 u 及其整个子树内所有节点的灵能值变为原值按位异或 x;
-
本次操作的消耗为:size[u] * x,其中 size[u] 为以 u 为根的子树大小(节点数量)。
你需要使所有节点灵能值最终都变为 0,并使总消耗最小。