#P12639. [UOI 2020] Topological Sorting of a Tree

    ID: 14188 远端评测题 1000ms 256MiB 尝试: 0 已通过: 0 显示难度省选/NOI− 上传者: 标签>动态规划 DP2020树形 DP拓扑排序组合数学前缀和容斥原理UOI(乌克兰)

[UOI 2020] Topological Sorting of a Tree

题目描述

给定一棵包含 nn 个顶点的树,顶点编号从 11 到 nn。树的根节点是编号为 11 的顶点。对于每个 vv(从 22 到 nn),定义 pvp_v 为与 vv 相邻且在 vv 到根节点路径上的顶点编号。每条边 (pv,v)(p_v, v) 上都标有符号 <\tt{<} 或 >\tt{>}。

求将数字 11 到 nn 填入树的所有顶点中的方案数,要求每个数字恰好使用一次,且满足所有边上标明的约束关系。具体来说:

  • 对于标有 <\tt{<} 的边,需满足 a[pv]<a[v]a[p_v] < a[v]
  • 对于标有 >\tt{>} 的边,需满足 a[pv]>a[v]a[p_v] > a[v]

由于答案可能很大,请输出对 109+710^9 + 7 取模的结果。

输入格式

第一行包含一个整数 nn(1≤n≤3 0001 \leq n \leq 3\,000)——树中顶点的数量。

接下来的 n−1n-1 行,每行包含一个整数 pip_i(1≤pi<i1 \leq p_i < i)和一个字符 cic_i(ci∈{<,>}c_i \in \{\tt{<}, \tt{>}\}),表示顶点 pip_i 和 ii 之间的边标有符号 cic_i。注意顶点编号从 22 开始。

输出格式

输出一个整数——将数字 11 到 nn 填入顶点且满足所有边约束的方案数。注意需要输出对 109+710^9 + 7 取模后的结果。

4
1 <
2 <
3 >
3
4
1 <
1 <
1 <
6
5
1 <
1 <
3 >
3 >
18

提示

  • (88 分)n≤10n \leq 10;
  • (66 分)n≤18n \leq 18;
  • (1010 分)所有 ci=<c_i = \tt{<};
  • (44 分)所有 pi=1p_i = 1;
  • (1313 分)pi=i−1p_i = i - 1,且 1≤n≤2001 \leq n \leq 200;
  • (1919 分)所有 pi=i−1p_i = i - 1;
  • (2424 分)n≤200n \leq 200;
  • (1616 分)无额外限制。

翻译由 DeepSeek V3 完成