D. 异或树

    传统题 文件IO:tree 3000ms 256MiB

异或树

该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。

题目描述

33DAI 得到了一棵有 nn 个点的树,第 ii 个点上写着一个正整数 aia_i。

一条简单路径是指经过每个点至多一次的路径。一条简单路径的权是这条路径上所有点上的数 的按位异或和。⊕\oplus 表示按位异或:把两个整数写成二进制后逐位比较,相同得 00、 不同得 11;在 C++ 中,按位异或写作 ^(例如 a ^ b)。例如一条经过点 u,v,wu, v, w 的路径,它的权就是 au⊕av⊕awa_u \oplus a_v \oplus a_w。

如果一棵树中不存在权为 00 的简单路径,就称它是好的。

33DAI 可以执行任意多次(也可以一次也不执行)如下操作:选择一个点,把写在这个点上的数替换成 任意一个正整数。33DAI 想知道,最少需要执行多少次操作,才能让这棵树变成好的。

输入格式

从文件 tree.in 读入数据。

第一行包含一个整数 nn,表示树的点数。

第二行包含 nn 个整数 a1,a2,…,ana_1, a_2, \dots, a_n,相邻两个整数之间用一个空格分隔。

接下来 n−1n-1 行,每行包含两个整数 xx 与 yy,表示树上的一条边。

输出格式

输出到文件 tree.out。

输出一行一个整数,表示 33DAI 最少需要执行的操作次数。

6
3 2 1 3 2 1
4 5
3 4
1 4
2 1
6 1
2

样例 1 解释

把第 11 个点上的数改成 1313、第 44 个点上的数改成 4242,一共执行 22 次操作; 此时树中任意一条简单路径的权都不等于 00,所以这组输出对应的方案是合法的。

4
2 1 1 1
1 2
1 3
1 4
0

样例 2 解释

一次操作也不执行时,树中任意一条简单路径的权都不等于 00,所以答案是 00。

5
2 2 2 2 2
1 2
2 3
3 4
4 5
2

样例 3 解释

把第 22 个点上的数改成 55、第 44 个点上的数改成 66,一共执行 22 次操作; 此时树中任意一条简单路径的权都不等于 00,所以这组输出对应的方案是合法的。

样例 4

见 tree4.in 与 tree4.ans。

样例 5

见 tree5.in 与 tree5.ans。

数据范围

对于所有测试数据,保证:

  • 1≤n≤2×1051 \le n \le 2 \times 10^5;
  • 1≤ai<2301 \le a_i < 2^{30};
  • 1≤x,y≤n1 \le x, y \le n 且 x≠yx \ne y,并且给出的 n−1n-1 条边恰好构成一棵树。

子任务

本题共 20 个测试点,按测试点计分:

测试点 分值 每个测试点 特殊限制
1∼61 \sim 6 3030 55 n≤8n \le 8
7∼127 \sim 12 n≤2000n \le 2000
13∼2013 \sim 20 4040 无额外限制

每个测试点单独评分,全部测试点的得分之和即为本题得分。

三三信奥国庆模拟赛 CSP-S 第三场

未参加
状态
已结束
规则
OI
题目
4
开始于
2026-10-3 8:30
结束于
2026-10-6 8:30
持续时间
3.5 小时
主持人
参赛人数
30