순열과 허용된 교환 쌍이 주어질 때, 주어진 쌍으로 정렬할 수 있는지 판정하고, 신장 포레스트에서 잎 제거 규칙이 만들어 내는 교환 순서를 출력한다.
보통7그래프DFS유니온 파인드시뮬레이션아직 제출이 없습니다시간 제한0.5초메모리 제한128 MB1부터 N까지의 수가 한 번씩 나오는 순열이 주어진다.
또 위치 쌍 (a,b)가 Q개 주어진다. 각 쌍은 a번 위치의 수와 b번 위치의 수를 교환할 수 있다는 뜻이고, 같은 쌍을 여러 번 사용해도 된다.
허용된 교환만 사용해 순열을 오름차순으로 정렬할 수 있는지 판정하고, 정렬할 수 있으면 출력 규칙이 정하는 교환 순서를 출력한다. 교환은 500000번을 넘게 사용할 수 없다.
첫째 줄에 순열의 길이 N (1≤N≤1000)이 주어진다.
둘째 줄에 1 이상 N 이하의 서로 다른 정수 N개가 순열을 이루어 주어진다.
셋째 줄에 허용된 교환의 개수 Q (1≤Q≤200000)가 주어진다.
이어지는 Q개 줄에 교환이 허용된 두 위치 a와 b가 주어진다. 두 수는 1 이상 N 이하이고 서로 다르다. 같은 쌍이 여러 번 주어지기도 하고, 두 수의 순서가 바뀌어 주어지기도 한다.
허용된 교환으로 순열을 정렬할 수 없으면 첫째 줄에 NEMOGUCE를 출력한다.
정렬할 수 있으면 다음 규칙이 만드는 교환을 만들어진 순서대로 한 줄에 하나씩 출력한다. 순열을 정렬하는 방법은 보통 여러 가지이므로 이 규칙이 만드는 교환 순서만 정답으로 인정한다.
이 규칙은 교환을 최대 N(N−1)/2번 사용하므로 교환 횟수는 항상 500000 이하다.