#P5353. 树上后缀排序

    ID: 4269 远端评测题 1000ms 500MiB 尝试: 0 已通过: 0 难度: 6 上传者: 标签>字符串倍增O2优化后缀数组,SA

树上后缀排序

题目描述

给定一棵以 11 为根包含 nn 个节点的树,保证对于 2n2 \sim n 的每个节点,其父亲的编号均小于自己的编号。

每个节点上有一个的字符,一个节点所代表的字符串定义为从当前节点一直到根节点的简单路径上经过的所有字符连起来形成的字符串。

请你给这些字符串按照字典序排序。

特别地,如果两个节点所代表的字符串完全相同,它们的大小由它们父亲排名的大小决定,即谁的父亲排名大谁就更大;如果仍相同,则由它们编号的大小决定,即谁的编号大谁就更大。

输入格式

第一行包含一个正整数 nn

第二行包含 n1n-1 个数 f2nf_{2 \dots n},其中 fif_i 表示 ii 的父亲。

第三行为一个包含 nn小写字母的字符串 ss,其中 sis_i 表示编号为 ii 的节点上的字符。

输出格式

输出一行 nn 个正整数,第 ii 个正整数表示代表排名第 ii 的字符串的节点编号。

5
1 1 3 2
abbaa
1 5 4 2 3

提示

对于 20%20\% 的数据,n103n \le 10 ^ 3

对于 50%50\% 的数据,n105n \le 10 ^ 5

对于 100%100\% 的数据,1n5×1051 \le n \le 5 \times 10 ^ 5