CF2070D.Tree Jumps

普及/提高-

通过率:0%

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

给定一棵包含 nn 个顶点的有根树。树中顶点编号为 11 到 nn,根为顶点 11。定义 dxd_x 为根到顶点 xx 的距离(最短路径上的边数)。

初始时,一个棋子被放置在根节点。你可以执行以下操作任意次(包括零次):

  • 将棋子从当前顶点 vv 移动到顶点 uu,满足 du=dv+1d_u = d_v + 1。如果 vv 是根节点,可以选择任意满足此约束的顶点 uu;但如果 vv 不是根节点,则 uu 不能是 vv 的邻居(即 vv 和 uu 之间不能有直接边相连)。

例如在上图的树结构中,允许的移动包括:1→21 \rightarrow 2,1→51 \rightarrow 5,2→72 \rightarrow 7,5→35 \rightarrow 3,5→45 \rightarrow 4,3→63 \rightarrow 6,7→67 \rightarrow 6。

如果一个顶点序列满足:存在一种棋子移动方式,使得棋子按顺序恰好访问序列中的所有顶点(且仅这些顶点),则该序列被称为有效的。

你的任务是计算有效顶点序列的数量。由于答案可能很大,请输出其对 998244353998244353 取模的结果。

输入格式

第一行包含一个整数 tt(1≤t≤1041 \le t \le 10^4)——测试用例的数量。

每个测试用例的第一行包含一个整数 nn(2≤n≤3⋅1052 \le n \le 3 \cdot 10^5)。

第二行包含 n−1n-1 个整数 p2,p3,…,pnp_2, p_3, \dots, p_n(1≤pi<i1 \le p_i < i),其中 pip_i 表示第 ii 个顶点的父节点。顶点 11 是根节点。

输入额外约束:所有测试用例的 nn 之和不超过 3⋅1053 \cdot 10^5。

输出格式

对于每个测试用例,输出一个整数——有效顶点序列的数量模 998244353998244353 的结果。

输入输出样例

  • 输入#1

    3
    4
    1 2 1
    3
    1 2
    7
    1 2 2 1 4 5

    输出#1

    4
    2
    8

说明/提示

第一个示例中,有效序列为:[1][1],[1,2][1, 2],[1,4][1, 4],[1,4,3][1, 4, 3]。

第二个示例中,有效序列为:[1][1],[1,2][1, 2]。

第三个示例中,有效序列为:[1][1],[1,2][1, 2],[1,2,7][1, 2, 7],[1,2,7,6][1, 2, 7, 6],[1,5][1, 5],[1,5,3][1, 5, 3],[1,5,3,6][1, 5, 3, 6],[1,5,4][1, 5, 4]。

翻译由 DeepSeek R1 完成

输入解题思路,AI测评打分。不知道怎么写?

首页