#P10013. [集训队互测 2023] Tree Topological Order Counting

[集训队互测 2023] Tree Topological Order Counting

题目描述

给定一颗 nn 个点的有根树,11 是根,记 uu 的父亲是 faufa_u。另给出一长度为 nn 的权值序列 bb

称一个长度为 nn 的排列 aa 为这颗树的合法拓扑序,当且仅当 2un,au>afau\forall 2 \le u \le n,a_u > a_{fa_u}

对每个点 uu,定义 f(u)f(u) 为,在所有这颗树的合法拓扑序中,baub_{a_u} 之和。

现在对 1un1 \le u \le n,求 f(u)mod109+7f(u) \bmod 10^9+7

输入格式

第一行一个整数 nn 表示树的点数。

第二行 n1n-1 个整数,第 ii 个表示 fai+1fa_{i+1},描述树的结构。

第三行 nn 个整数,第 ii 个表示 bib_i,描述权值序列。

输出格式

一行 nn 个整数,第 ii 个表示 f(i)mod109+7f(i) \bmod 10^9+7

5
1 1 3 2
3 5 4 4 1

18 27 27 15 15 

5
1 1 3 1
1 2 3 4 5

12 42 32 52 42

提示

Subtask nn \le 特殊限制 分值
11 1010 55
22 2020 1010
33 100100 1515
44 350350
55 30003000 A
66 2020
77 50005000

特殊限制 A:1in,bi=i\forall 1 \le i \le n,b_i=i

对于所有数据:2n50002 \le n \le 50001fai<i1 \le fa_i < i0bi<109+70 \le b_i < 10^9+7