시간 제한 | 메모리 제한 | 제출 | 정답 | 맞힌 사람 | 정답 비율 |
---|---|---|---|---|---|
1 초 | 128 MB | 97 | 0 | 0 | 0.000% |
어랜지는 창영이가 즐겨하는 플래시 게임이다. 이 게임은 1부터 N까지 숫자로 이루어진 순열이 주어졌을 때, 숫자의 위치를 적절히 바꿔서 1,2,3,...,N 순서로 만드는 게임이다.
하지만, 모든 숫자의 위치를 바꿀 수 있는 것은 아니다. 플레이어는 미리 정해져있는 교환만 사용할 수 있다.
창영이는 최고 기록을 깨려고 한다. 따라서, 교환을 되도록 적게 사용하려고 한다.
순열의 순서와 사용할 수 있는 교환의 위치가 주어졌을 때, 교환을 되도록 적게 사용해서 오름차순으로 만드는 프로그램을 작성하시오.
첫째 줄에 순열의 길이 N과 사용할 수 있는 교환의 수 M이 주어진다. (1 ≤ N ≤ 12, 1 ≤ M ≤ N*(N-1)/2)
둘째 줄에는 1부터 N까지 숫자로 이루어져 있는 순열이 주어진다.
셋째 줄부터 M개 줄에는 사용할 수 있는 교환의 방법이 주어진다. 방법은 두 숫자 A와 B로 이루어져 있고, A번째 위치와 B번째 위치의 수를 서로 바꾸는 교환을 사용할 수 있다는 뜻이다. 동일한 교환이 두 개 이상 주어지지 않는다.
첫째 줄에 사용한 교환의 수 X를 출력한다. 다음 줄부터 사용한 교환 번호를 한 줄에 하나씩 출력한다. 입력의 첫 번째로 주어지는 교환이 1번이고, 나머지는 순서대로 증가한다. 항상 답이 존재하는 경우만 입력으로 주어지며, 방법이 여러 가지일 때는 아무거나 출력하면 된다.
2 1 2 1 1 2
1 1
3 2 2 1 3 1 3 2 3
3 2 1 2
5 5 1 2 3 4 5 1 5 2 5 1 4 1 1 3 5
0