异或生成树
题号:NC206079
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

在图论中,树是一种无向图,其中任意两个顶点间存在唯一一条路径。
给定一棵根为 1 含有 n 个点的树,每个点都有一个权值,通过删去一些点和边我们可以组成一棵新的树,我们规定一棵树的权值为这棵树所有的点权值的异或,问能够新生成的树权值最大为多少?

输入描述:

输入包含多行,第一行包含一个数字  ,表示节点数目,
第二行包含 n 个数字 ,表示每个节点的权值,
接下来 n - 1 行每行包含两个整数 表示 u 与 v 之间有一条边连接。

输出描述:

输出包含一行,代表新生成的树权值最大的最大值。
示例1

输入

复制
3
1 2 3
1 2
1 3

输出

复制
3
示例2

输入

复制
5
4 2 6 8 1
1 5
2 3 
1 3
3 4

输出

复制
14