当前没有测试数据。
    
                      问题描述
牛可乐有一棵由 n 个结点构成的树,第 i 个节点的权值为 ai。我们定义一个连通块 V 的权值为:
- 当前连通块中两两结点的权值异或和,即 i,j∈V∑(ai⊕aj)。
 
你需要计算全部连通块的权值之和。由于答案可能很大,请将答案对 (109+7) 取模后输出。
此题中的连通块定义为:对于树上的任意一个点集 S,如果 S 中的任意两点 u,v 之间存在一条路径,且路径上的所有点都在 S 中,则称 S 是一个连通块。
输入格式
- 第一行输入一个整数 n(1≤n≤105),代表树上的节点数量。
 
- 第二行输入 n 个整数 a1,a2,…,an(1≤ai≤109),代表每个节点的权值。
 
- 此后 n−1 行,第 i 行输入两个整数 ui,vi(1≤ui,vi≤n,ui=vi),代表树上第 i 条边连接节点 ui 和 vi。
 
输出格式
输出一个整数,代表全部连通块的权值和。答案可能很大,请将答案对 (109+7) 取模后输出。
示例
示例 1:
输入:
3
5 2 1
1 2
1 3
输出:
50
说明:
- 在这个样例中,一共有 6 个连通块,每一个连通块的权值依次为:
- {1},记为 V1,权值为
i,j∈V1∑(ai⊕aj)=a1⊕a1=0;
 
- {1,2},记为 V2,权值为 i,j∈V2∑(ai⊕aj)=(a1⊕a1)+(a1⊕a2)+(a2⊕a1)+(a2⊕a2)=14;
 
- {1,3},记为 V3,权值为 i,j∈V3∑(ai⊕aj)=(a1⊕a1)+(a1⊕a3)+(a3⊕a1)+(a3⊕a3)=8;
 
- {1,2,3},记为 V4,权值为 $ \sum\limits_{i,j \in \Bbb V_4} (a_i \oplus a_j) = 28 $;
 
- {2},记为 V5,权值为 i,j∈V5∑(ai⊕aj)=a2⊕a2=0;
 
- {3},记为 V6,权值为 i,j∈V6∑(ai⊕aj)=a3⊕a3=0。
 
 
- 所以,全部连通块的权值和为 0+14+8+28+0+0=50。
 
示例 2:
输入:
4
5 6 3 1
1 2
1 3
2 4
输出:
142