{"problem":{"name":"[集训队互测 2023] Tree Topological Order Counting","description":{"content":"给定一颗 $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 \\l","description_type":"Markdown"},"platform":"Luogu","limit":{"time_limit":1000,"memory_limit":524288},"difficulty":{"LuoguStyle":"P6"},"is_remote":true,"is_sync":true,"sync_url":null,"sign":"LGP10013"},"statements":[{"statement_type":"Markdown","content":"给定一颗 $n$ 个点的有根树，$1$ 是根，记 $u$ 的父亲是 $fa_u$。另给出一长度为 $n$ 的权值序列 $b$。\n\n称一个长度为 $n$ 的排列 $a$ 为这颗树的合法拓扑序，当且仅当 $\\forall 2 \\le u \\le n,a_u > a_{fa_u}$。\n\n对每个点 $u$，定义 $f(u)$ 为，在所有这颗树的合法拓扑序中，$b_{a_u}$ 之和。\n\n现在对 $1 \\le u \\le n$，求 $f(u) \\bmod 10^9+7$。\n\n## Input\n\n第一行一个整数 $n$ 表示树的点数。\n\n第二行 $n-1$ 个整数，第 $i$ 个表示 $fa_{i+1}$，描述树的结构。\n\n第三行 $n$ 个整数，第 $i$ 个表示 $b_i$，描述权值序列。\n\n## Output\n\n一行 $n$ 个整数，第 $i$ 个表示 $f(i) \\bmod 10^9+7$。\n\n[samples]\n\n## Note\n\n| Subtask | $n \\le$ | 特殊限制 | 分值 |\n| :-----: | :-----: | :------: | :--: |\n|   $1$   |  $10$   |    无    | $5$  |\n|   $2$   |  $20$   |    无    | $10$ |\n|   $3$   |  $100$  |    无    | $15$ |\n|   $4$   |  $350$  |    无    | $15$ |\n|   $5$   | $3000$  |    A     | $15$ |\n|   $6$   | $3000$  |    无    | $20$ |\n|   $7$   | $5000$  |    无    | $20$ |\n\n特殊限制 A：$\\forall 1 \\le i \\le n,b_i=i$。\n\n对于所有数据：$2 \\le n \\le 5000$，$1 \\le fa_i < i$，$0 \\le b_i < 10^9+7$。","is_translate":false,"language":"English"}],"meta":{"iden":"LGP10013","tags":["集训队互测","2023","动态规划优化","树形 DP"],"sample_group":[["5\n1 1 3 2\n3 5 4 4 1\n","18 27 27 15 15 \n"],["5\n1 1 3 1\n1 2 3 4 5\n","12 42 32 52 42\n"]],"created_at":"2026-03-03 11:09:25"}}