QOJ.ac

QOJ

実行時間制限: 2.0 s メモリ制限: 256 MB 満点: 100

#11628. 广义插入排序

統計

给定一棵有 $N$ 个顶点的有根树。顶点编号为 $0, 1, \dots, N-1$。根节点为顶点 $0$,顶点 $i$ ($i = 1, 2, \dots, N-1$) 的父节点为 $p_i$。

初始时,顶点 $i$ 上写有一个整数 $a_i$。其中 $(a_0, a_1, \dots, a_{N-1})$ 是 $(0, 1, \dots, N-1)$ 的一个排列。

你可以执行以下操作至多 $25\,000$ 次。目标是使得顶点 $i$ 上的值等于 $i$。

  • 选择一个顶点,记为 $v$。考虑连接顶点 $0$ 和 $v$ 的路径。
  • 对路径上的值进行旋转。具体来说,对于路径上的每一条边 $(i, p_i)$,将顶点 $p_i$ 上的值替换为顶点 $i$ 上的值(操作前的值),并将顶点 $v$ 上的值替换为顶点 $0$ 上的值(操作前的值)。
  • 你可以选择顶点 $0$,此时操作不产生任何效果。

输入格式

输入按以下格式给出:

$N$ $p_1 \ p_2 \ \dots \ p_{N-1}$ $a_0 \ a_1 \ \dots \ a_{N-1}$

数据范围: $2 \le N \le 2000$,$0 \le p_i \le i-1$,$(a_0, a_1, \dots, a_{N-1})$ 是 $(0, 1, \dots, N-1)$ 的一个排列。

输出格式

在第一行,输出操作次数 $Q$。在接下来的 $Q$ 行中,按顺序输出所选的顶点。

样例

样例输入 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

说明

在样例 1 中,第一次操作后,顶点 $0, 1, \dots, 4$ 上的值分别为 $4, 0, 1, 2, 3$。

在样例 2 中,第一次操作后,顶点 $0, 1, \dots, 4$ 上的值分别为 $3, 1, 0, 2, 4$。第二次操作后,顶点 $0, 1, \dots, 4$ 上的值分别为 $1, 0, 2, 3, 4$。

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.