B. Tempestissimo(tempest)

    Type: Default File IO: tempest 1000ms 512MiB

Tempestissimo(tempest)

You cannot submit for this problem because the contest is ended. You can click "Open in Problem Set" to view this problem in normal mode.

题目描述

给定一棵以 11 为根的 nn 个点的树,每个点上有一个物件,节点 ii 上的物件的得分为 aia_i

除根节点的物件之外,对于每个物件,你可以选择将它移动到父亲节点位置或者不动。

在所有物件移动完毕之后,对于每个节点,若该节点有至少两个物件,则得分为所有物件得分的异或和;否则该节点不得分。每个移动方案的得分为移动后所有节点的得分之和。

求所有 2n12^{n−1} 种移动方案的得分之和对 109+710^9+7 取模的结果。

输入格式

从文件 tempest.intempest.in 中读入数据。

第一行一个正整数 nn

第二行 nn 个非负整数 a1,a2,...,ana_1,a_2,...,a_n

第三行 nn 个正整数 f2,f3,...,fnf_2,f_3,...,f_n,其中 fif_i 表示第 ii 个节点的父亲节点的编号。

输出格式

输出到文件 tempest.outtempest.out 中。

一行一个非负整数表示答案对 109+710^9+7 取模的结果。

样例 1 输入

3
1 2 4
1 2

样例 1 输出

12

样例 1 解释

共有 231=42^{3−1}=4 种不同的方案:

  1. 不移动任何物件,最终每个节点上的物件集合分别为 {11}, {22}, {44},得分为 0。

  2. 移动节点 22 上的物件,最终每个节点上的物件集合分别为{1,21,2}, {}, {44},得分为 1xor2=31xor2=3

  3. 移动节点 33 上的物件,最终每个节点上的物件集合分别为{11}, {2,42,4}, {},得分为 2xor4=62xor4=6

  4. 移动节点 2,32,3 上的物件,最终每个节点上的物件集合分别为{1,21,2}, {44}, {},得分为 1xor2=31xor2=3

故所有方案的得分之和为 0+3+6+3=120+3+6+3=12

样例 2 输入

3
1 2 2
1 1

样例 2 输出

7

样例 3 输入

5
0 1 0 2 2
1 1 2 2

样例 3 输出

22

样例 4 输入

4
1 1 1 0
1 2 2

样例 4 输出

2

样例 5

见右侧文件下的 tempest5.intempest5.intempest5.anstempest5.ans

数据范围与提示

对于所有测试数据,保证 1n1050ai1091≤n≤10^5,0≤a_i≤10^9

每个测试点的具体限制见下表:

测试点编号 nn≤ 特殊性质特殊性质
11 2020
232∼3 10001000
44 10510^5 树是一条链
565∼6 树是一棵二叉树
7107∼10

NOIp3 模拟赛

Not Attended
Status
Done
Rule
IOI
Problem
4
Start at
2024-11-27 19:00
End at
2024-11-27 21:00
Duration
2 hour(s)
Host
Partic.
12