题目描述
题目译自 Ukrainian Olympiads in Informatics 2020 Stage 4 Day2 T3. Топологічні сортування дерева
给定一棵有 n 个顶点的树,顶点编号从 1 到 n。树的根是编号为 1 的顶点。对于每个顶点 v(从 2 到 n),定义 pv 为与 v 相邻且位于顶点 v 到根的简单路径上的顶点编号。在每条边 (pv,v) 上写有一个符号 < 或 >。
找出将数字 1 到 n 写入树顶点的方法数量,使得每个数字恰好使用一次,并且满足所有边上标示的关系。即对于所有标有 < 的边,必须满足 a[pv]<a[v],对于所有标有 > 的边,必须满足 a[pv]>a[v]。
由于答案可能非常大,请输出答案对 109+7 取模的结果。
输入格式
第一行包含一个整数 n (1≤n≤3000),表示树的顶点数量。
接下来的 n−1 行,每行包含一个整数 pi (1≤pi<i) 和一个字符 ci (ci∈{<,>}),表示顶点 pi 和 i 之间的边上标有符号 ci。请注意,这里的 i 从 2 开始编号。
输出格式
输出一个整数,表示将数字 1 到 n 分配到树顶点上并满足所有边上关系的方法数量。请注意,需要输出的是答案对 109+7 取模后的结果,而非原始答案。
4
1 <
2 <
3 >
3
4
1 <
1 <
1 <
6
5
1 <
1 <
3 >
3 >
18
数据范围与提示
详细子任务附加限制及分值如下表所示:
| 子任务 |
分值 |
附加限制 |
| 1 |
8 |
n≤10 |
| 2 |
6 |
n≤18 |
| 3 |
10 |
ci=< |
| 4 |
4 |
pi=1 |
| 5 |
13 |
pi=i−1, 1≤n≤200 |
| 6 |
19 |
pi=i−1 |
| 7 |
24 |
n≤200 |
| 8 |
16 |
无附加限制 |