【MX-X3-T6】「RiOI-4」TECHNOPOLIS 2085
题目背景
![](https://cdn.luogu.com.cn/upload/image_hosting/931ql7zi.png)
(图片来自 phigros 曲绘,侵删。)
啊~啊~啊咦~啊咦~哦→啊↑啊↓啊~嗯~哎哎↑哎哦哎嗯~哦啊~爱↖爱↑爱↗爱↑爱↑啊~啊~啊咦~啊咦~啊→啊↑啊↓啊~嗯嗯↓嗯↓滴嘚滴嘚唔↑~~嘟←嘟↖️嘟↑嘟↗️嘟→嘟↘️嘟↓
你说得对,但是这里是梦熊周赛题,不是出题人用来发电的地方,所以你需要做一道图论题。
题目描述
约定 $\operatorname{lca}_G(u,v)$ 表示编号为 $u,v$ 的结点在有标号有根树 $G$ 上的最近共同祖先。给定一棵根编号为 $1$,大小为 $n$ ,结点编号为 $1\sim n$ 的有根树 $T$ 与一个大小为 $m$ 的点集 $S$。你需要求出有多少个**不同的**大小为 $n$ 的结点编号为 $1\sim n$ 的有根树 $T'$,满足对于任意 $u,v\in S$,有 $\operatorname{lca}_T(u,v)=\operatorname{lca}_{T'}(u,v)$。
答案对 $998\,244\,353$ 取模。
我们称两颗大小为 $n$ 的有标号有根树是**不同的**,当且仅当以下二者至少一个成立:
- 它们的根节点不同。
- 存在一条边,在一棵树中未出现,而在另一棵树中出现。
输入输出格式
输入格式
第一行两个正整数 $n,m$。
第二行 $n-1$ 个正整数 $p_2,p_3,\cdots,p_n$ 表示编号为 $2\sim n$ 的结点的父亲编号。
最后一行 $m$ 个正整数,表示选出的集合 $S$ 中结点的编号。
输出格式
一行一个整数,表示答案对 $998\,244\,353$ 取模的值。
输入输出样例
输入样例 #1
5 3
1 1 2 2
3 4 5
输出样例 #1
1
输入样例 #2
5 3
1 1 2 2
2 3 4
输出样例 #2
8
输入样例 #3
20 10
20 8 7 16 3 15 1 10 17 3 13 15 1 17 1 14 14 8 4
3 7 10 19 15 13 4 6 18 5
输出样例 #3
553508927
说明
**【样例解释 #1】**
只有与 $T$ 完全相同的树满足要求。
**【样例解释 #2】**
对于样例 2,满足要求的树的所有 $8$ 种 $p$ 数组如下(根的 $p_i$ 为 $0$):
$\{0,1,1,2,1\},\{0,1,1,2,2\},\{0,1,1,2,3\},\{0,1,1,2,4\},$
$\{0,1,1,5,2\},\{0,5,1,2,1\},\{0,1,5,2,1\},\{5,1,1,2,0\}$。
**【数据范围】**
**本题开启捆绑测试。**
|子任务|分数|$n\le$|$m\le$|
|:-:|:-:|:-:|:-:|
|$1$|$7$|$10$|$10$|
|$2$|$18$|$200$|$200$|
|$3$|$22$|$10^5$|$10^5$|
|$4$|$17$|$10^6$|$10$|
|$5$|$36$|$10^6$|$10^6$|
对于 $100\%$ 的数据,$2\le m\le n\le 10^6$,保证输入的 $p$ 对应了一棵有标号有根树,$S$ 描述了一个结点组成的集合。