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

Luogu
IDLGP10013
Time1000ms
Memory512MB
DifficultyP6
集训队互测2023动态规划优化树形 DP
给定一颗 $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$。 ## Input 第一行一个整数 $n$ 表示树的点数。 第二行 $n-1$ 个整数,第 $i$ 个表示 $fa_{i+1}$,描述树的结构。 第三行 $n$ 个整数,第 $i$ 个表示 $b_i$,描述权值序列。 ## Output 一行 $n$ 个整数,第 $i$ 个表示 $f(i) \bmod 10^9+7$。 [samples] ## Note | 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$。
Samples
Input #1
5
1 1 3 2
3 5 4 4 1
Output #1
18 27 27 15 15 
Input #2
5
1 1 3 1
1 2 3 4 5
Output #2
12 42 32 52 42
API Response (JSON)
{
  "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 \\l...",
      "is_translate": false,
      "language": "English"
    }
  ]
}
Full JSON Raw Segments