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

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

题目描述

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

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

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

现在对 1≤u≤n1 \le u \le n,求 f(u) mod 109+7f(u) \bmod 10^9+7。

输入格式

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

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

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

输出格式

一行 nn 个整数,第 ii 个表示 f(i) mod 109+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 n≤n \le 特殊限制 分值
11 1010 无 55
22 2020 1010
33 100100 1515
44 350350
55 30003000 A
66 无 2020
77 50005000

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

对于所有数据:2≤n≤50002 \le n \le 5000,1≤fai<i1 \le fa_i < i,0≤bi<109+70 \le b_i < 10^9+7。