CF2244F Anya Loves Trees!
题目描述
Anya 研究一棵以 $1$ 号节点为根的有根树。树的每一个叶子节点上都写有 $1$ 到 $k$ 的整数,其中 $k$ 为叶子节点的数量。每个叶子节点上恰好写有一个数字。对于每个节点,其子节点按照索引从小到大的顺序从左到右排列。
Anya 注意到,如果按照从左到右的顺序列出所有叶子节点,它们的值会形成一个序列。她希望这个序列能够变成严格递增的。
为此,Anya 可以进行如下操作:选择任意一个节点,将其所有子节点向左循环移动一次。例如,如果某节点的子节点当前顺序为 $[1, 2, 3]$,循环左移后顺序变为 $[2, 3, 1]$。这个操作可以对任意节点进行任意次。
下图展示了对节点 $1$ 的子节点进行循环左移的例子:

你的任务是帮助 Yura 判断,Anya 是否可以通过上述操作使所有叶子的整数从左到右组成一个严格递增序列。
* 注:循环左移是指所有元素都向左移动一位,原来的第一个元素移动到最后一个位置。
输入格式
第一行包含一个整数 $t$($1 \le t \le 10^4$),表示测试用例数量。
每个测试用例的第一行包含一个整数 $n$($1 \le n \le 2 \cdot 10^5$),表示节点数量。
接下来一行包含 $n-1$ 个整数 $p_2, p_3, \dots, p_n$($1 \le p_i \le n$),表示第 $i$ 个节点的父节点编号。每个节点的子节点按编号递增顺序排列。
第三行包含 $n$ 个整数 $a_1, a_2, \dots, a_n$($0 \le a_i \le n$)。若第 $i$ 个节点不是叶子,则 $a_i = 0$;若第 $i$ 个节点是叶子,则 $a_i > 0$,表示该节点上的数字。保证所有正整数 $a_i$ 构成一个排列。
保证所有测试用例中 $n$ 的总和不超过 $2 \cdot 10^5$。
输出格式
对于每个测试用例,若可以通过上述操作使叶子的整数从左到右形成一个严格递增序列,则输出 "YES";否则输出 "NO"。
输出时可以任意大小写。例如,"yEs"、"yes"、"Yes" 和 "YES" 都表示正确。
说明/提示
由 ChatGPT 5 翻译