만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

새끼 고양이의 집 (작은 입력)

시간 제한5초메모리 제한512 MB

요약
다각형 꼭짓점에 방마다 모든 맛이 닿도록 최대한 많은 맛을 칠하고 사전 순으로 가장 앞선 배치를 출력합니다.
난이도

보통10점 중 6점

유형
완전 탐색, 그래프
정답자
아직 제출이 없습니다

문제

새끼 고양이를 여러 마리 입양해서 고양이 집을 지으려고 한다. 집의 바깥 윤곽은 꼭짓점이 NN개인 볼록 다각형이고, 내부는 꼭짓점끼리 직선으로 잇는 벽 MM개로 여러 개의 방으로 나뉜다. 두 벽이 꼭짓점이 아닌 곳에서 만나는 일은 없지만, 한 꼭짓점에 여러 벽이 닿을 수는 있다.

꼭짓점마다 캣닢으로 기둥을 하나씩 세운다. 고양이는 자기가 있는 방에 닿아 있는 기둥이라면 무엇이든 가지고 놀 수 있다.

캣닢은 맛이 여러 가지다. 기둥 하나에는 맛을 한 가지만 쓰지만, 기둥마다 다른 맛을 써도 된다. 문제는 어떤 방에서 집에 쓰인 맛 전부에 닿을 수 없으면 그 방의 고양이가 서운해한다는 점이다.

꼭짓점마다 캣닢 맛을 정해서 (가) 모든 방에서 모든 맛에 닿을 수 있고, (나) 쓰는 맛의 가짓수가 최대가 되도록 하라.

아래 그림은 팔각형 집에 세 가지 맛(빨강, 초록, 파랑 점)을 배치해 모든 방의 고양이를 만족시킨 예다. 위쪽 벽의 왼쪽 끝에서 시작해 시계 방향으로 초록, 파랑, 빨강, 빨강, 파랑, 초록, 파랑, 빨강이다. 조건을 만족하는 배치는 여러 개일 수 있고, 그림은 그중 하나다.

입력

첫 줄에 테스트 케이스의 수 TT가 주어진다. 이어서 테스트 케이스가 TT개 주어진다.

각 테스트 케이스는 세 줄이다. 첫 줄에 꼭짓점의 수 NN과 내부 벽의 수 MM이 공백으로 구분되어 주어진다. 둘째 줄에는 각 벽이 시작하는 꼭짓점 U1,U2,…,UMU_1, U_2, \dots, U_M이 공백으로 구분되어 주어진다. 셋째 줄에는 각 벽이 끝나는 꼭짓점 V1,V2,…,VMV_1, V_2, \dots, V_M이 같은 방식으로 주어진다.

꼭짓점에 시계 방향으로 11부터 NN까지 번호를 붙였을 때, ii번째 벽은 꼭짓점 UiU_i와 ViV_i를 잇는다.

제한

  • 1≤T≤1001 \le T \le 100
  • 4≤N≤84 \le N \le 8
  • 1≤M≤N−31 \le M \le N - 3
  • 모든 ii에 대해 1≤Ui<Vi≤N1 \le U_i < V_i \le N
  • 내부 벽끼리는 꼭짓점 NN개에서만 서로 닿는다.
  • 내부 벽은 꼭짓점 NN개에서만 집의 바깥 윤곽에 닿는다.

출력

각 테스트 케이스마다 두 줄을 출력한다.

첫 줄에는 Case #x: C를 출력한다. xx는 테스트 케이스 번호이고, CC는 쓸 수 있는 캣닢 맛의 최대 가짓수다.

둘째 줄에는 꼭짓점 ii에 배정한 맛의 번호 yiy_i를 공백으로 구분해 NN개 출력한다. 각 yiy_i는 11 이상 CC 이하의 정수다.

맛 CC가지를 모두 쓰면서 조건을 만족하는 배정이 여러 개면, 수열 y1 y2 … yNy_1\ y_2\ \dots\ y_N이 사전순으로 가장 앞서는 것 하나만 출력한다.

예제5

  1. 예제 1

    입력
    2
    4 1
    2
    4
    8 3
    1 1 4
    3 7 7
    
    예상 출력
    Case #1: 3
    1 2 1 3
    Case #2: 3
    1 2 3 1 1 3 2 3
    
  2. 예제 2

    입력
    2
    4 1
    1
    3
    4 1
    2
    4
    
    예상 출력
    Case #1: 3
    1 2 3 2
    Case #2: 3
    1 2 1 3
    
  3. 예제 3

    입력
    5
    8 1
    1
    3
    8 1
    1
    4
    8 1
    1
    5
    8 1
    2
    6
    8 1
    3
    8
    
    예상 출력
    Case #1: 3
    1 2 3 1 1 1 1 2
    Case #2: 4
    1 2 3 4 1 1 2 3
    Case #3: 5
    1 2 3 4 5 2 3 4
    Case #4: 5
    1 2 1 3 4 5 3 4
    Case #5: 4
    1 2 3 1 1 1 2 4
    
  4. 예제 4

    입력
    2
    8 5
    1 1 1 1 1
    3 4 5 6 7
    8 5
    1 3 5 1 3
    3 5 7 7 7
    
    예상 출력
    Case #1: 3
    1 2 3 2 3 2 3 2
    Case #2: 3
    1 2 3 2 1 3 2 3
    
  5. 예제 5

    입력
    4
    5 2
    1 1
    3 4
    6 3
    1 3 1
    3 5 5
    7 4
    1 3 5 1
    3 5 7 5
    8 5
    2 4 6 2 2
    4 6 8 6 8
    
    예상 출력
    Case #1: 3
    1 2 3 2 3
    Case #2: 3
    1 2 3 1 2 3
    Case #3: 3
    1 2 3 1 2 1 3
    Case #4: 3
    1 2 1 3 2 1 2 3