#372. [R59G]拓扑排序

[R59G]拓扑排序

时空限制

1S/512M

题目描述

给定一棵以 11 为根的有根树 TT,树中有 nn 个节点,边的方向均为从父亲指向儿子。

对于树中的每条边,你都可以选择保留或者删除。显然,对于这 n1n-1 条边,总共有 2n12^{n-1} 种不同的保留方案。

设某种方案下保留下来的边集为 SS。这些边与 nn 个节点组成了一个有根森林 TST_S

定义 F(TS)F(T_S) 为该森林 TST_S 的拓扑序数量。即:由 1,2,,n1, 2, \dots, n 组成的排列 p1,p2,,pnp_1, p_2, \dots, p_n 的数量,满足如果在森林 TST_S 中节点 uu 是节点 vv 的祖先,那么在排列 ppuu 必须出现在 vv 之前。

请你计算所有 2n12^{n-1} 种方案下 F(TS)F(T_S) 的总和对 998244353998244353 取模后的值。即求:

SF(TS)mod998244353 \sum_{S} F(T_S) \bmod{998244353}

格式

输入格式

第一行包含一个正整数 nn,表示节点的数量。

第二行包含 n1n - 1 个正整数 f2,f3,fnf_2,f_3,\cdots f_n,其中 fi<if_i < i,表示 fif_iii 的父亲。

输出格式

输出一个整数,表示所有方案的拓扑序数量的和对 998244353998244353 取模后的结果。

样例

样例输入 #1

4
1 2 2 

样例输出 #1

78

样例输入 #2

7
1 2 1 1 2 5

样例输出 #2

59676

数据规模

子任务编号 分值 nn \leq 特殊性质
11 1010 1010
22 1515 50005000 fi=i1f_i = i - 1
33 1515 fi=1f_i = 1
44 2020 300300
55 4040 50005000

对于 100%100\% 的数据,2n50002 \le n \le 50001fi<i1 \leq f_i < i