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

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

[UOI 2020] Topological Sorting of a Tree

Description

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

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

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

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

Input Format

第一行包含一个整数 nn1n30001 \leq n \leq 3\,000)——树中顶点的数量。

接下来的 n1n-1 行,每行包含一个整数 pip_i1pi<i1 \leq p_i < i)和一个字符 cic_ici{<,>}c_i \in \{\tt{<}, \tt{>}\}),表示顶点 pip_iii 之间的边标有符号 cic_i。注意顶点编号从 22 开始。

Output Format

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

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

Hint

  • 88 分)n10n \leq 10
  • 66 分)n18n \leq 18
  • 1010 分)所有 ci=<c_i = \tt{<}
  • 44 分)所有 pi=1p_i = 1
  • 1313 分)pi=i1p_i = i - 1,且 1n2001 \leq n \leq 200
  • 1919 分)所有 pi=i1p_i = i - 1
  • 2424 分)n200n \leq 200
  • 1616 分)无额外限制。

翻译由 DeepSeek V3 完成