#starrail3. 丹恒与建木
丹恒与建木
Background
丹恒生活在鳞渊境里。
Description
丹恒生活在一颗有根建木(树)上,初始节点从 1 到n 编号。为了方便丹恒的出行,仙舟人决定从每个非叶子节点出发,修建一条新道路。具体而言,对与每个非叶子节点 u,仙舟人会从其子节点中均匀随机选取一个点v,并在 u 和 v之间修建一条新道路。显然,这些新修建的道路连成了许多的连通块。为了帮助他们的修建,你需要告诉仙舟人,连通块个数的期望是多少。
熟读智库的丹恒听说这个任务后,认为它对于你而言太简单了。因此,他决定添加一些对于树的修改操作:
Add u:在节点 u 下添加一子结点,编号为 n+i,其中 i 为操作编号。保证操作前结点 u 存在。
Del u:删除结点 u。保证操作前结点u 存在且为叶子结点。
Upd u:将树根变为 u。保证操作前结点u 存在。
。 同时,对于任意时刻,保证树不会被删空。
对于初始的树和每次修改之后所得的树,你都需要回答一遍上述的问题。注意,m 次修改之间不独立,但是蒙德人每次修建的新道路不受上一次结果的影响。
Format
Input
第一行,一个整数 n,表示初始树的大小。
第二行至第 n 行,每行输入一个整数,第 i 行将给出f(i),即初始树中 i 的父节点。初始时,节点 1 为树根。
第 n+1 行,一个整数 m,表示修改操作个数。
第 n+2 行至第 n+m+1 行,每行输入一个修改操作,形式见 题目描述。
Output
输出共 m+1 行。
第 1 行,为初始时的答案。
第 2 行至第 m+1 行,第 i 行应输出第 i−1 次修改操作后的答案。
所有输出均对 998244353 取模。具体而言,如果答案为p/q ,你应当输出一个满足 xq≡p(mod998244353) 的 x
Samples
2
1
4
Add 1
Upd 2
Del 3
Del 1
1
2
1
1
1
Limitation
1s, 1024KiB for each test case.