#P5215. 「泉州基地校201811D3」2.胖哥的树

「泉州基地校201811D3」2.胖哥的树

Description

胖哥有一棵 nn 个节点的树,其中有一些节点是黑色的,另外一些节点是白色的。

考虑这棵树上的一个kk条边的边集。如果胖哥将这 kk 条边从树上删除,则将会把这棵树分成 K+1K+1 个联通块。

现在,胖哥想知道,存在多少种这样的边集,使得删除这些边后,每个联通块只有一个黑色的节点。由于答案可能很大,请将答案 mod\text{mod} 10000000071000000007109+710^9+7) 。

Input Format

输入文件名为tree.in

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

第二行有 n1n-1 个整数 P0,P1,,Pn2P_0,P_1, \cdots ,P_{n-2}PiP_i 表示第( i+1i+1 )个节点与第 PiP_i 个节点之间有一条边。假设树的节点的编号是从00n1n-1

第三个有 nn 个整数 X0,X1,,X_0,X_1, \cdots ,X_{n-1}( ( X_i=0$ 或 11 )。如果 XiX_i 等于1,表示节点 ii 是黑色,反之则表示节点 ii 是白色。

Output Format

输出文件为tree.out

输出共一行,包含一个整数,表示答案 mod\text{mod} 10000000071000000007

Sample

【输入输出样例1】 tree.in

3
0 0
0 1 1	

tree.out

2

【输入输出样例2】 tree.in

6
0 1 1 0 4
1 1 0 0 1 0

tree.out

1

【输入输出样例3】 tree.in

10
0 1 2 1 4 4 4 0 8
0 0 0 1 0 1 1 0 0 1

tree.out

27

Hint

对于 30%30\% 的数据,2n102 \le n \le 10

对于 60%60\% 的数据,2n10002 \le n \le 1000

对于 100%100\% 的数据,2n1000002 \le n \le 100000