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

[UOI 2020] Topological Sorting of a Tree

题目描述

给定一棵包含 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 取模的结果。

输入格式

第一行包含一个整数 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 开始。

输出格式

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

输入输出样例 #1

输入 #1

4
1 <
2 <
3 >

输出 #1

3

输入输出样例 #2

输入 #2

4
1 <
1 <
1 <

输出 #2

6

输入输出样例 #3

输入 #3

5
1 <
1 <
3 >
3 >

输出 #3

18

说明/提示

  • 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 分)无额外限制。