앨리스와 밥

시간 제한1초메모리 제한128 MB

요약
다각형의 변과 서로 교차하지 않는 대각선이 섞인 무순서 간선 목록에서 정점들의 둘레 순서를 복원하는 문제입니다.
난이도

보통10점 중 7점

유형
그래프, DFS, 기하
정답자
아직 제출이 없습니다

문제

앨리스와 밥이 퍼즐을 푼다. 앨리스는 꼭짓점이 nn개인 볼록 다각형을 그리고, 각 꼭짓점에 정수 1,2,…,n1, 2, \dots, n을 임의의 순서로 붙인다. 이어서 서로 교차하지 않는 대각선 몇 개를 그린다(끝점을 공유하는 것은 교차로 보지 않는다).

앨리스는 다각형의 모든 변과 자신이 그린 대각선을 하나의 목록에 섞어서, 각각을 두 끝점만으로 알려 준다. 어느 것이 변이고 어느 것이 대각선인지는 알려 주지 않는다. 밥은 이 목록만 보고 다각형 경계를 따라가는 꼭짓점들의 순환 순서를 알아내야 한다.

다각형이 볼록이고 대각선이 서로 교차하지 않으므로, 경계 순서는 회전과 반사를 무시하면 유일하게 결정된다. 각 퍼즐에 대해 이 경계 순서를 복원하는 프로그램을 작성하라.

입력

첫째 줄에 퍼즐의 개수 dd가 주어진다(1≤d≤201 \le d \le 20).

각 퍼즐은 두 줄로 주어진다.

  • 첫째 줄에는 두 정수 nn과 mm이 주어진다(3≤n≤10 0003 \le n \le 10\,000, 0≤m≤n−30 \le m \le n - 3). 각각 꼭짓점의 개수와 대각선의 개수이다.
  • 둘째 줄에는 nn개의 변과 mm개의 대각선을 나타내는 2(m+n)2(m + n)개의 정수가 주어진다. 1≤j≤m+n1 \le j \le m + n인 각 jj에 대해, 2j−12j-1번째와 2j2j번째 위치의 정수는 하나의 변 또는 대각선의 두 끝점 aja_j와 bjb_j이며, 1≤aj,bj≤n1 \le a_j, b_j \le n이고 aj≠bja_j \ne b_j이다.

변과 대각선은 임의의 순서로 주어지고 중복은 없다. 모든 퍼즐에는 항상 해가 존재한다.

출력

정확히 dd개의 줄을 출력한다. 각 퍼즐마다 한 줄씩 출력한다. ii번째 퍼즐에 대해 1,2,…,n1, 2, \dots, n의 순열을 출력하는데, 이는 다각형 경계를 따라 나타나는 꼭짓점들의 순서이다. 수열은 반드시 꼭짓점 11에서 시작해야 하며, 두 번째 원소는 꼭짓점 11의 두 경계 이웃 중 더 작은 쪽이어야 한다.

예제5

  1. 예제 1

    입력
    1
    4 1
    1 3 4 2 1 2 4 1 2 3
    
    예상 출력
    1 3 2 4
    
  2. 예제 2

    입력
    1
    3 0
    1 2 1 3 2 3
    
    예상 출력
    1 2 3
    
  3. 예제 3

    입력
    1
    4 0
    1 4 2 3 4 2 3 1
    
    예상 출력
    1 3 2 4
    
  4. 예제 4

    입력
    1
    5 0
    4 5 5 1 2 3 1 2 4 3
    
    예상 출력
    1 2 3 4 5
    
  5. 예제 5

    입력
    3
    3 0
    1 3 3 2 1 2
    4 1
    2 4 4 1 3 1 1 2 2 3
    6 1
    4 5 3 2 6 1 5 6 1 2 3 4 1 4
    
    예상 출력
    1 2 3
    1 3 2 4
    1 2 3 4 5 6