atcoder#APC001H. Generalized Insertion Sort

Generalized Insertion Sort

题目描述

N N 頂点の根つき木が与えられます。 頂点には番号 0, 1, ..., N1 0,\ 1,\ ...,\ N-1 がついており、根は頂点 0 0 です。 そして、頂点 i(i = 1, 2, ..., N1) i(i\ =\ 1,\ 2,\ ...,\ N-1) の親は頂点 pi p_i です。

はじめ、頂点 i i には整数 ai a_i が書かれています。 なお、(a0, a1, ..., aN1) (a_0,\ a_1,\ ...,\ a_{N-1}) (0, 1, ..., N1) (0,\ 1,\ ...,\ N-1) の順列になっています。

あなたは以下の操作を 25,000 25,000 回まで好きな回数実行できます。頂点 i i に書かれた値が i i となるようにしてください。

  • 頂点を 1 1 個選び v v とする。頂点 0 0 と頂点 v v の間のパスを考える。
  • パス上の頂点の値を回転させる。つまり、パス上の各辺 (i, pi) (i,\ p_i) について、頂点 pi p_i に書かれた値を頂点 i i に(この操作の直前に)書かれていた値に書き換え、頂点 v v の値は頂点 0 0 に(この操作の直前に)書かれていた値に書き換える。
  • なお、頂点 0 0 を選んでもよいが、この場合はなにもしないという操作になる。

输入格式

入力は以下の形式で標準入力から与えられる。

N N p1 p_1 p2 p_2 ... pN1 p_{N-1} a0 a_0 a1 a_1 ... aN1 a_{N-1}

输出格式

1 1 行目に操作の回数 Q Q を出力せよ。 2 2 行目から Q+1 Q+1 行目には、操作で選んだ頂点を順に出力せよ。

题目大意

题目描述

给予N N 个结点的树。结点编号为0, 1\…, N1 0,\ 1,\…,\ N-1 ,根结点编号为0 0 。然后,顶点i(i =1, 2\…, N1) i (i\ = 1,\ 2,\…,\ N-1) 的父结点是点pi p_i

开始,结点i i 等于整数ai a_i 。另外,(a0, a1\…, aN1) (a_0,\ a_1,\…,\ a_{N-1}) (0, 1\…, N1)(0,\ 1,\…,\ N-1) 的序列。

你可以按自己喜欢的次数执行以下操作,最高可达25,000 25,000。 请把顶点i i 的值变成i i

-顶点为1 1 个选择v v 。考虑顶点0 0 和顶点v v 之间的路径。

-旋转路径上顶点的值。也就是说,对于路径上的每边(i, pi) (i,\ p_i) ,将顶点pi p_i 所写的值改写为顶点i i (就在操作之前),顶点v v 的值为顶点0改写成 0改写成(在这个操作之前)写的值。

-另外,也可以选择顶点0 0 ,不过,这相当于什么都没做。

输入格式

输入以以下形式输入:

N N p1 p_1 p2 p_2 pN1 p_{N-1} a0 a_0 a1 a_1 aN1 a_{N-1}

输出格式

在第1 1 行输出操作的次数Q Q 。从第2 2 行到第Q+1 Q+1 行,按顺序输出通过操作选出的顶点。

输入输出样例

输入#1

5
0 1 2 3
2 4 0 1 3

输出#1

2
3
4

输入#2

5
0 1 2 2
4 3 1 2 0

输出#2

3
4
3
1

提示

数据范围

  • 2  N  2000 2\ \leq\ N\ \leq\ 2000

  • 0  pi  1 0\ \leq\ p_i\ \ 1

(a0, a1\…, aN1) (a_0,\ a_1,\…,\ a_{N-1}) (0, 1\…(0,\ 1,\…的序列。

Sample Explanation 1

- 1 1 第一次操作后,顶点0, 1, .. 4 0,\ 1,\ ..\ 4 所写的值为4 0 1 2 3 4 \ 0 \ 1 \ 2 \ 3

Sample Explanation 2

- 1 1 第一次操作后,顶点0, 1, .., 4 0,\ 1,\ ..写,\ 4 值是3, 1,,  2, 4 3,\ 1,,\ \ 2,\ 4 - 2 2 次操作后,顶点 1, .. 4 \ 1,\ . .\ 4 所写的值为1 0 2 3 4 1 \ 0 \ 2 \ 3 \ 4

5
0 1 2 3
2 4 0 1 3
2
3
4
5
0 1 2 2
4 3 1 2 0
3
4
3
1

提示

制約

  • 2  N  2000 2\ \leq\ N\ \leq\ 2000
  • 0  pi  i1 0\ \leq\ p_i\ \leq\ i-1
  • (a0, a1, ..., aN1) (a_0,\ a_1,\ ...,\ a_{N-1}) (0, 1, ..., N1) (0,\ 1,\ ...,\ N-1) の順列である

Sample Explanation 1

- 1 1 回目の操作後、頂点 0, 1, .., 4 0,\ 1,\ ..,\ 4 に書かれた値は 4, 0, 1, 2, 3 4,\ 0,\ 1,\ 2,\ 3 となる

Sample Explanation 2

- 1 1 回目の操作後、頂点 0, 1, .., 4 0,\ 1,\ ..,\ 4 に書かれた値は 3, 1, 0, 2, 4 3,\ 1,\ 0,\ 2,\ 4 となる - 2 2 回目の操作後、頂点 0, 1, .., 4 0,\ 1,\ ..,\ 4 に書かれた値は 1, 0, 2, 3, 4 1,\ 0,\ 2,\ 3,\ 4 となる