#P12842. 字典树逆向
字典树逆向
字典树逆向
Problem Description
字典树(Trie)是像字典一样的树。如下图所示,字典树用边来代表字符,每个节点到它的所有子节点的边上的字符互不相同,而从根节点到树上某一节点的路径就代表一个字符串,例如 表示字符串 “”。
注意,本题中字符集为所有正整数,并非 26 个小写字母。
有 个非空的字符串 被构造成了一棵字典树 ,它包含 个节点,其中 1 号节点为根节点,剩下节点的编号被打乱了。现在给定 ,请还原这 个非空的字符串。
若有多个可行方案,请输出 最小的方案;若在此基础上还有多个可行方案,请输出 字典序最小的方案。
字符串序列 的字典序小于字符串序列 当且仅当存在某个 ()满足字符串 ()且字符串 。请注意,这里的字符串比较也为字典序比较。
字符串 的字典序小于字符串 当且仅当 是 的前缀或者存在某个 ()满足 ()且 ,其中 表示字符串 的第 个字符。
Input
第一行包含一个正整数 (),表示测试数据的组数。 每组数据第一行包含一个正整数 (),表示字典树的节点数。 第二行包含 个正整数 (),依次表示每个节点的父节点编号。 输入数据保证 。
Output
每组数据第一行输出一个正整数 ,表示字符串的数量。 接下来 行,第 行的输出代表字符串 。由于字符串可能很长,请输出它的哈希值 $\left(\sum_{j=1}^{|S_i|}998\,244\,353^{|S_i|-j}\cdot S_i[j]\right)\bmod 2^{64}$。
Sample Input
4
2
1
3
1 1
4
1 2 1
6
1 2 1 4 5
Sample Output
1
1
2
1
2
2
1
1996488707
2
998244354
1992983577591021572
Hint
样例一的方案为:。 样例二的方案为:,。 样例三的方案为:,。 样例四的方案为:,。
Source
2025“钉耙编程”中国大学生算法设计暑期联赛(7)