题目描述
我们有一颗包含 N 个节点的带权树。第 i 条边双向连接了节点 ui 和节点 vi,边的权重为 wi。
对于节点对 (x,y),我们定义 textdist(x,y) 如下:
- 从 x 到 y 的最短路径上所有边的权重的异或和。
找到所有节点对 (i,j) (1leqiltjleqN) 的 textdist(i,j),并将这些值按照 (109+7) 取模后的和打印出来。
什么是异或和?
整数 A 和 B 的异或和,记为 AmathrmXORB,定义如下:
- 当用二进制表示 AmathrmXORB 时,如果 A 和 B 中恰好有一个数位是 1,那么在对应的数位上,AmathrmXORB 的数位是 1,否则为 0。
例如,3mathrmXOR5=6(在二进制中:011mathrmXOR101=110)。
约束条件
- 2leqNleq2times105
- 1lequiltvileqN
- 0leqwilt260
- 给定的图是一棵树。
- 输入中的所有值都是整数。
输入
输入的格式如下,从标准输入中给出:
N
u1 v1 w1
u2 v2 w2
vdots
uN−1 vN−1 wN−1
输出
打印 textdist(i,j) 的和,模 (109+7) 后的结果。
示例输入 1
3
1 2 1
1 3 3
示例输出 1
6
我们有 textdist(1,2)=1,textdist(1,3)=3,textdist(2,3)=2,它们的和为 6。
示例输入 2
5
3 5 2
2 3 2
1 5 1
4 5 13
示例输出 2
62
示例输入 3
10
5 7 459221860242673109
6 8 248001948488076933
3 5 371922579800289138
2 5 773108338386747788
6 10 181747352791505823
1 3 803225386673329326
7 8 139939802736535485
9 10 657980865814127926
2 4 146378247587539124
示例输出 3
241240228
打印 textdist(i,j) 的和,模 (109+7) 后的结果。