아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

폭발성 물질

면접 대비

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

요약
충돌하는 물질을 두 상자에 안전하게 나누고 더 많이 담은 상자를 최소화합니다.
난이도

보통10점 중 5점

유형
그래프, BFS, 동적 계획법
정답자
아직 제출이 없습니다

문제

에릭은 순도 분석을 위해 물질 nn종의 표본을 실험실로 보내려 한다. 물질에는 1번부터 nn번까지 번호가 붙어 있다. 표본은 용량이 같은 상자 여러 개에 나누어 담는다. 상자 하나가 물질 cc종까지 담을 수 있으면 그 상자의 용량은 cc다.

어떤 물질끼리는 화학 반응으로 폭발을 일으켜서 같은 상자에 담을 수 없다. 에릭은 물질 kk종 a1,…,aka_1, \dots, a_k를 한 상자에 담아 폭발이 일어난다면 그중 두 종만 담아도 폭발이 일어난다는 사실을 알아냈다. 그래서 폭발을 일으키는 물질 쌍을 빠짐없이 적어 쌍 mm개짜리 목록을 만들었다.

폭발은 모두 물질 두 종 사이에서 일어나므로, 에릭은 용량이 같은 상자 두 개만으로 물질을 안전하게 보낼 수 있는지 궁금하다. 물질 nn종을 남김없이 두 상자에 나누어 담아야 하고, 한 상자에 든 두 물질이 목록에 있는 쌍이면 안 된다. 보낼 수 있다면 상자 용량의 최솟값은 얼마인가?

입력

첫 줄에 테스트 케이스의 개수 TT가 주어진다 (T≤20T \le 20).

각 테스트 케이스의 첫 줄에는 정수 nn과 mm이 주어진다 (1≤n≤10001 \le n \le 1000, 0≤m≤min⁡(n(n−1)/2, 105432)0 \le m \le \min(n(n-1)/2,\ 105432)). nn은 물질의 종류 수, mm은 목록에 있는 쌍의 개수다. 이어지는 mm개 줄에는 각각 정수 aa와 bb가 주어진다 (1≤a,b≤n1 \le a, b \le n, a≠ba \ne b). 물질 aa와 물질 bb를 같은 상자에 담으면 폭발이 일어난다는 뜻이다. 같은 쌍이 두 번 주어지지는 않는다.

출력

각 테스트 케이스마다 정수 하나를 한 줄에 출력한다. 상자 두 개로 물질을 보낼 수 없으면 -1을 출력하고, 보낼 수 있으면 상자 용량의 최솟값을 출력한다.

예제4

  1. 예제 1

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

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

    입력
    1
    7 0
    
    예상 출력
    4
    
  4. 예제 4

    입력
    1
    2 1
    1 2
    
    예상 출력
    1