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

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

Fegla의 스쿠터 시험 주행

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

요약
방향 그래프에서 시작 방으로 돌아오는 가장 짧은 사이클이 지나는 방 개수를 구합니다.
난이도

보통10점 중 6점

유형
BFS, 최단 경로, 그래프
정답자
아직 제출이 없습니다

문제

Fegla는 건물 안에서 작은 스쿠터를 타고 다닌다. 대회 심사를 맡고 있던 날 스쿠터가 고장 났고, Hamzawy가 심사실에서 고쳐 주었다. Fegla는 수리가 제대로 됐는지 확인하려고 심사실을 나가 건물을 한 바퀴 돈 뒤 출발한 방으로 돌아오려 한다. 심사진을 오래 비워 둘 수 없으니 지나는 방의 수가 가장 적은 경로를 고르려 하는데, 출발한 방 말고 다른 방을 적어도 하나는 지나야 한다.

Fegla는 문을 열지 못하고 스쿠터로 밀기만 하므로 두 방을 잇는 연결은 정해진 한 방향으로만 통과할 수 있다.

방의 개수와 방 사이의 연결이 주어진다. 어떤 방에서 출발해 다른 방을 하나 이상 지난 뒤 같은 방으로 돌아오는 순환 경로 가운데, 지나는 서로 다른 방의 개수가 가장 적은 값을 구하라. 예를 들어 방 11에서 방 22, 방 33을 거쳐 방 11로 돌아오는 경로가 지나는 방은 33개다. 조건상 답은 항상 22 이상이다.

입력

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

각 테스트 케이스의 첫 줄에는 방의 개수 NN과 연결의 개수 MM이 공백으로 구분되어 주어진다 (1≤N≤10001 \le N \le 1000, 0≤M≤1060 \le M \le 10^6).

이어지는 MM개의 줄에는 서로 다른 두 정수 uu와 vv가 공백으로 구분되어 주어진다 (1≤u,v≤N1 \le u, v \le N). 방 uu에서 방 vv로 가는 연결이 있다는 뜻이다. 같은 두 방 사이에 연결이 여러 개 있을 수 있고, 두 방을 잇는 경로도 여러 개일 수 있다.

출력

각 테스트 케이스마다 한 줄에 Case n: R 형식으로 출력한다. nn은 11부터 시작하는 테스트 케이스 번호이고, RR은 조건을 만족하는 가장 짧은 순환 경로가 지나는 서로 다른 방의 개수다. 그런 경로가 없으면 RR은 −1-1이다.

예제4

  1. 예제 1

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

    입력
    3
    1 0
    2 2
    1 2
    2 1
    3 3
    1 2
    2 3
    3 1
    
    예상 출력
    Case 1: -1
    Case 2: 2
    Case 3: 3
    
  3. 예제 3

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

    입력
    1
    12 12
    3 4
    6 7
    1 2
    7 8
    11 5
    5 6
    2 3
    4 1
    10 11
    4 5
    9 10
    8 9
    
    예상 출력
    Case 1: 4