atcoder#ABC233F. [ABC233F] Swap and Sort

[ABC233F] Swap and Sort

题目描述

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

あなたが可能な操作は M M 種類あり、操作 i i は「 P P ai a_i 番目の要素と P P bi b_i 番目の要素を入れ替える」というものです。

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

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

输入格式

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

N N P1 P_1 P2 P_2 \ldots PN P_N M M a1 a_1 b1 b_1 a2 a_2 b2 b_2 \vdots aM a_M bM b_M

输出格式

P P を昇順に並び替えることができるならば以下の形式で出力せよ。

K K c1 c_1 c2 c_2 \ldots cK c_K

ここで、K K は操作の回数を表し、ci(1 i  K) c_i(1\leq\ i\ \leq\ K) i i 回目に行う操作が操作 ci c_i であることを表す。
0 K  5× 105 0\leq\ K\ \leq\ 5\times\ 10^5 を満たさなければならないことに注意せよ。

P P を昇順に並び替えることができないならば、-1 と出力せよ。

题目大意

给你一个长度为 nn 的排列和 mm 种操作. 每个操作形如 (u,v)(u,v) , 表示将 aua_uava_v 交换 .

请问是否存在一种方案, 经过适当操作, 把这个排列变为 (1,2,3,,n)(1,2,3,\dots,n)? 如果可以, 请给出一种构造, 要求长度不超过 5×1055 \times 10^5. 否则请输出 1-1.

n103,m2×105n \le 10^3 , m \le 2 \times 10^5.

6
5 3 2 4 6 1
4
1 5
5 6
1 2
2 3
3
4 2 1
5
3 4 1 2 5
2
1 3
2 5
-1
4
1 2 3 4
6
1 2
1 3
1 4
2 3
2 4
3 4
0

提示

制約

  • 2 N  1000 2\leq\ N\ \leq\ 1000
  • P P (1,2,,N) (1,2,\ldots,N) を並び替えた順列
  • $ 1\leq\ M\ \leq\ \min(2\times\ 10^5,\ \frac{N(N-1)}{2}) $
  • 1 ai < bi N 1\leq\ a_i\ \lt\ b_i\leq\ N
  • i j i\neq\ j ならば (ai,bi) (aj,bj) (a_i,b_i)\neq\ (a_j,b_j)
  • 入力に含まれる値は全て整数

Sample Explanation 1

P 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) $ と変化します。

Sample Explanation 2

P P を昇順に並び替えることはできません。

Sample Explanation 3

初めから P P が昇順に並んでいることもあります。 また、以下のような答えも正解になります。 4 5 5 5 5 操作の回数を最小化する必要はないことに注意してください。