#ABC233F. 交换排序

交换排序

交换排序

题目描述

有一个 (1,2,,N)(1,2,\ldots,N) 的排列 P=(P1,P2,,PN)P=(P_1,P_2,\ldots,P_N)

可以进行 MM 种操作,操作 ii 是「交换 PP 的第 aia_i 个元素和第 bib_i 个元素」。

能否通过按任意顺序执行总共不超过 5×1055\times 10^5 次操作,将 PP 排成升序?

如果可以,请给出一个这样的操作序列;如果不行,请报告无法做到。

输入格式

输入按以下格式从标准输入给出:

NN
P1P_1 P2P_2 \ldots PNP_N
MM
a1a_1 b1b_1
a2a_2 b2b_2
\vdots
aMa_M bMb_M

输出格式

如果可以将 PP 排成升序,请按以下格式输出:

KK
c1c_1 c2c_2 \ldots cKc_K

这里,KK 表示要执行的操作次数,cic_i (1iK)(1\leq i \leq K) 表示第 ii 次执行的操作是操作 cic_i

注意必须满足 0K5×1050\leq K \leq 5\times 10^5

如果无法将 PP 排成升序,请输出 -1。

样例

6
5 3 2 4 6 1
4
1 5
5 6
1 2
2 3
3
4 2 1

PP 按如下方式变化:$(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)$。

5
3 4 1 2 5
2
1 3
2 5
-1

无法将 PP 排成升序。

4
1 2 3 4
6
1 2
1 3
1 4
2 3
2 4
3 4
0

PP 可能一开始就已经排成升序。

此外,以下也是一种可接受的输出:

4
5 5 5 5

注意,并不要求最小化操作次数。

数据范围

  • 2N10002\leq N \leq 1000
  • PP(1,2,,N)(1,2,\ldots,N) 的一个排列
  • 1Mmin(2×105,N(N1)2)1\leq M \leq \min(2\times 10^5, \frac{N(N-1)}{2})
  • 1ai<biN1\leq a_i \lt b_i\leq N
  • iji\neq j 时,(ai,bi)(aj,bj)(a_i,b_i)\neq (a_j,b_j)
  • 输入中的所有值均为整数

提示

答案不唯一,输出任意合法解即可。

难度 提高+/省选
通过率
尝试 0
已通过 0
ID
2358
类型
传统题
Time Limit
2000ms
Memory Limit
1024MiB
上传者
标签