AT_abc233_f [ABC233F] Swap and Sort

题目描述

有一个长度为 $N$ 的排列 $P=(P_1,P_2,\ldots,P_N)$,它是 $1,2,\ldots,N$ 的一个排列。 你可以进行 $M$ 种不同的操作,第 $i$ 种操作是“交换 $P$ 的第 $a_i$ 个元素和第 $b_i$ 个元素”。 你可以按照任意顺序,最多进行 $5\times 10^5$ 次操作。请判断是否可以将 $P$ 排成升序。 如果可以,请给出一种操作序列。如果不可以,请说明无法做到。

输入格式

输入通过标准输入按以下格式给出。 > $N$ $P_1$ $P_2$ $\ldots$ $P_N$ $M$ $a_1$ $b_1$ $a_2$ $b_2$ $\vdots$ $a_M$ $b_M$

输出格式

如果可以将 $P$ 排成升序,请按以下格式输出: > $K$ $c_1$ $c_2$ $\ldots$ $c_K$ 其中,$K$ 表示操作次数,$c_i\ (1\leq i \leq K)$ 表示第 $i$ 次执行的是第 $c_i$ 种操作。 请注意,必须满足 $0\leq K \leq 5\times 10^5$。 如果无法将 $P$ 排成升序,请输出 `-1`。

说明/提示

### 限制条件 - $2\leq N \leq 1000$ - $P$ 是 $1,2,\ldots,N$ 的一个排列 - $1\leq M \leq \min(2\times 10^5,\ \frac{N(N-1)}{2})$ - $1\leq a_i < b_i \leq N$ - 若 $i\neq j$,则 $(a_i,b_i)\neq (a_j,b_j)$ - 输入中的所有值均为整数 ### 样例解释 1 $P$ 变化过程如下:$(5,3,2,4,6,1)\to(5,2,3,4,6,1)\to(5,2,3,4,1,6)\to(1,2,3,4,5,6)$。 ### 样例解释 2 无法将 $P$ 排成升序。 ### 样例解释 3 初始时 $P$ 可能已经是升序排列。此外,像下面这样的答案也是正确的: ``` 4 5 5 5 5 ``` 注意,不要求操作次数最少。 由 ChatGPT 4.1 翻译