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

题目描述

给定一颗 $n$ 个点的有根树,$1$ 是根,记 $u$ 的父亲是 $fa_u$。另给出一长度为 $n$ 的权值序列 $b$。 称一个长度为 $n$ 的排列 $a$ 为这颗树的合法拓扑序,当且仅当 $\forall 2 \le u \le n,a_u > a_{fa_u}$。 对每个点 $u$,定义 $f(u)$ 为,在所有这颗树的合法拓扑序中,$b_{a_u}$ 之和。 现在对 $1 \le u \le n$,求 $f(u) \bmod 10^9+7$。

输入格式

第一行一个整数 $n$ 表示树的点数。 第二行 $n-1$ 个整数,第 $i$ 个表示 $fa_{i+1}$,描述树的结构。 第三行 $n$ 个整数,第 $i$ 个表示 $b_i$,描述权值序列。

输出格式

一行 $n$ 个整数,第 $i$ 个表示 $f(i) \bmod 10^9+7$。

说明/提示

| Subtask | $n \le$ | 特殊限制 | 分值 | | :-----: | :-----: | :------: | :--: | | $1$ | $10$ | 无 | $5$ | | $2$ | $20$ | 无 | $10$ | | $3$ | $100$ | 无 | $15$ | | $4$ | $350$ | 无 | $15$ | | $5$ | $3000$ | A | $15$ | | $6$ | $3000$ | 无 | $20$ | | $7$ | $5000$ | 无 | $20$ | 特殊限制 A:$\forall 1 \le i \le n,b_i=i$。 对于所有数据:$2 \le n \le 5000$,$1 \le fa_i < i$,$0 \le b_i < 10^9+7$。