AT_apc001_h Generalized Insertion Sort

题目描述

给定一棵有 $N$ 个顶点的有根树。顶点编号为 $0,\ 1,\ \ldots,\ N-1$,根为顶点 $0$。顶点 $i$($i=1,\ 2,\ \ldots,\ N-1$)的父节点为 $p_i$。 初始时,每个顶点 $i$ 上写有一个整数 $a_i$。$(a_0,\ a_1,\ \ldots,\ a_{N-1})$ 是 $0$ 到 $N-1$ 的一个排列。 你可以最多进行 $25000$ 次如下操作,从而使得每个顶点 $i$ 上的值变为 $i$。 - 选择一个顶点 $v$。考虑从顶点 $0$ 到顶点 $v$ 的路径。 - 将这条路径上的顶点的值循环右移。也就是说,对于路径上的每一条边 $(i, p_i)$,将顶点 $p_i$ 上的值写到顶点 $i$ 上,并将原来顶点 $0$ 上的值写到顶点 $v$ 上。 - 你也可以选择顶点 $0$,但在这种情况下,这个操作什么也不做。

输入格式

输入从标准输入读入,格式如下: > $N$ $p_1$ $p_2$ ... $p_{N-1}$ $a_0$ $a_1$ ... $a_{N-1}$

输出格式

第一行输出操作次数 $Q$。 接下来的 $Q$ 行,每行输出一次操作中选择的顶点编号。

说明/提示

### 约束条件 - $2 \leq N \leq 2000$ - $0 \leq p_i \leq i-1$ - $(a_0,\ a_1,\ \ldots,\ a_{N-1})$ 是 $0$ 到 $N-1$ 的一个排列 ### 样例说明 1 - 第 $1$ 次操作后,顶点 $0,\ 1,\ \ldots,\ 4$ 上的值分别变为 $4,\ 0,\ 1,\ 2,\ 3$。 ### 样例说明 2 - 第 $1$ 次操作后,顶点 $0,\ 1,\ \ldots,\ 4$ 上的值分别变为 $3,\ 1,\ 0,\ 2,\ 4$。 - 第 $2$ 次操作后,顶点 $0,\ 1,\ \ldots,\ 4$ 上的值分别变为 $1,\ 0,\ 2,\ 3,\ 4$。 由 ChatGPT 5 翻译