atcoder#ABC233F. [ABC233F] Swap and Sort

[ABC233F] Swap and Sort

配点 : 500500

問題文

(1,2,,N)(1,2,\ldots,N) を並び替えた長さ NN の順列 P=(P1,P2,,PN)P=(P_1,P_2,\ldots,P_N) があります。

あなたが可能な操作は MM 種類あり、操作 ii は「 PPaia_i 番目の要素と PPbib_i 番目の要素を入れ替える」というものです。

操作を好きな順序で、合計 5×1055\times 10^5 回以下行うことによって、PP を昇順に並び替えることはできますか?

できるならば、操作手順を 11 つ教えてください。できないならばその旨を伝えてください。

制約

  • 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)
  • 入力に含まれる値は全て整数

入力

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

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 は操作の回数を表し、ci(1iK)c_i(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

操作の回数を最小化する必要はないことに注意してください。