만드는 중입니다

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

지도 색칠하기

면접 대비

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

요약
국경을 맞댄 나라가 서로 다른 색이 되도록 가장 적은 색으로 칠하고 1부터 4까지는 그 숫자를, 그보다 많이 필요하면 many를 출력합니다.
난이도

보통10점 중 5점

유형
백트래킹, 그래프
정답자
아직 제출이 없습니다

문제

지도 제작자는 자신의 지도에 있는 나라를 서로 다른 색으로 칠하려고 한다. 국경을 맞댄 두 나라는 반드시 색이 달라야 한다. 어떤 지도든 네 가지 색이면 칠할 수 있다는 말을 들었지만, 아무리 궁리해도 네 색으로 칠하지 못하는 지도가 있었다. 네 색으로 칠한 지도를 펴내고 싶었던 그는 도움을 청하러 당신을 찾아왔다.

지도를 살펴본 당신은 모든 지도를 네 색으로 칠할 수 있는 것은 아니라고 설명한다. 알래스카와 미국 본토처럼 한 나라가 서로 떨어진 여러 조각으로 이루어져 있으면 색이 더 필요할 수 있다. 네 나라가 한 점에서 만나도 그럴 수 있고, 다섯 나라 이상이 한 점에서 만나도 마찬가지다.

그의 지도는 모두 작아서 나라가 많아야 16개다. 그래서 당신은 프로그램을 만들어 주기로 한다. 지도는 나라의 수와 국경 목록으로 주어진다. 국경으로 이어진 두 나라는 서로 다른 색을 써야 한다. 지도 전체를 칠하는 데 필요한 색의 최소 개수를 구하고, 그 수가 1, 2, 3, 4 중 하나인지 아니면 그보다 큰지 판정하라. 나라가 떨어진 조각으로 나뉘어 있거나 여러 나라가 한 점에서 만나는 경우에도 프로그램은 올바르게 동작해야 한다.

입력

첫 줄에 테스트 케이스의 개수 TT가 주어진다. 각 테스트 케이스는 다음과 같은 형식이다.

  • 첫 줄에 나라의 수 CC와 국경의 수 BB가 공백으로 구분되어 주어진다. (1≤C≤161 \le C \le 16, 0≤B≤1200 \le B \le 120)
  • 다음 BB개의 줄에는 두 정수 ii와 jj가 공백으로 구분되어 주어진다. (0≤i,j≤C−10 \le i, j \le C - 1, i≠ji \ne j) 나라 ii와 나라 jj가 국경을 맞대고 있다는 뜻이다.

출력

각 테스트 케이스마다 한 줄을 출력한다. 필요한 색의 최소 개수가 1, 2, 3, 4 중 하나이면 그 수를 출력하고, 그보다 크면 many를 출력한다.

예제1

  1. 예제 1

    입력
    3
    4 0
    4 4
    0 1
    1 2
    2 3
    3 0
    5 10
    0 1
    0 2
    0 3
    0 4
    1 2
    1 3
    1 4
    2 3
    2 4
    3 4
    
    예상 출력
    1
    2
    many