#P16057. [Oni2022国家队选拔赛]Portocal
[Oni2022国家队选拔赛]Portocal
题目描述
给定一棵以 为根的树,共有 个节点。每个节点都有一个 到 之间的自然数作为权值,但有些节点的权值尚未确定。
对于每个节点,Ana 会写下从根节点到该节点路径上所有节点权值组成的序列,顺序为从根到该节点。这样一共得到 个序列,然后将这 个序列按字典序排序。
现在给定一个长度为 的序列
其中每个 也在 到 之间。Portocal 会从排序后的第一个序列开始每天检查一个序列,直到找到一个等于 的序列。
Portocal 可以在 Ana 写序列之前,为所有尚未确定权值的节点赋值,赋值也必须在 到 之间。他希望尽可能早地找到序列 。
需要回答以下两个问题之一:
- Portocal 最少需要多少天才能找到序列 ;
- 有多少种给缺失权值赋值的方式,可以达到这个最少天数。答案对 取模。
题目保证至少存在一种赋值方式,使得某个根到节点路径序列等于 。
输入格式
第一行输入一个整数 :
- 若 ,要求回答第一个问题;
- 若 ,要求回答第二个问题。
第二行输入三个整数 。
第三行输入 个整数 ,表示节点权值。若 ,表示节点 尚未确定权值。
第四行输入 个整数,表示序列 。
接下来 行,每行输入两个整数 ,表示树上的一条边。
输出格式
输出一个整数,表示根据 的值对应的答案。
数据范围与约束
- ;
- ;
- ;
- 对所有 , 或 ;
- 对所有 ,。
子任务
| 子任务 | 分值 | 限制 |
|---|---|---|
| 1 | 8 | |
| 2 | 19 | |
| 3 | 22 | |
| 4 | 11 | |
| 5 | 40 |
样例 1
输入
1
8 3 3
-1 -1 2 -1 -1 -1 1 2
1 2 2
1 2
2 3
2 4
4 5
1 6
6 7
1 8
输出
4
解释
一种最优赋值为:
1 2 2 2 1 3 1 2
此时按字典序最靠前的几个序列为:
1 对应节点 1
1 2 对应节点 2
1 2 对应节点 8
1 2 2 对应节点 3,等于 S
因此最少第 天找到 。
注意,虽然节点 对应的序列也等于 ,但 Portocal 会在找到第一个等于 的序列时停止。
样例 2
输入
2
8 3 3
-1 -1 2 -1 -1 -1 1 2
1 2 2
1 2
2 3
2 4
4 5
1 6
6 7
1 8
输出
6
解释
共有 种赋值方式可以让 Portocal 在第 天找到序列 :
1 2 2 2 1 3 1 2
1 2 2 3 1 3 1 2
1 2 2 2 2 3 1 2
1 2 2 3 2 3 1 2
1 2 2 2 3 3 1 2
1 2 2 3 3 3 1 2