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

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

퍼즐

시간 제한2초메모리 제한1024 MB

요약
각각 시작 1과 끝 n을 가진 k개의 무방향 그래프가 주어질 때, 모든 그래프에서 동시에 정확히 T개의 간선을 지나 1에서 n으로 가는 보행이 존재하는 최소 T를 구한다.
난이도

어려움10점 중 9점

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

문제

얼마 전까지 큰 종이 지도 위에서 규칙에 따라 말을 움직이는 보드 게임이 꽤 인기를 끌었다.

최근에 바샤는 다락방에서 그런 지도를 한 무더기 발견했지만, 안타깝게도 게임 규칙은 함께 들어 있지 않았다. 설명이 없어서 그가 알아낸 것은 각 지도에 말이 놓일 수 있는 위치인 원이 여러 개 그려져 있고, 그중 시작 위치와 끝 위치가 표시되어 있다는 정도였다. 일부 원은 선분으로 이어져 있고, 말은 그 선분을 따라 움직일 수 있으며, 어떤 원 쌍 사이에는 선분이 여러 개 그어져 있을 수도 있다. 말은 선분을 양방향으로 움직일 수 있다.

게임 규칙을 찾지 못한 바샤는 자신만의 규칙을 만들었다. 게임에는 모든 지도가 동시에 참여한다. 바샤는 각 지도에서 말을 정확히 하나씩 사용한다. 처음에 각 말은 해당 지도에서 시작 위치에 놓인다. 바샤는 매 턴마다 모든 지도에서 말을 현재 위치에서 그 지도 안의 다른 위치로 옮기는데, 그 위치는 현재 위치와 선분으로 이어져 있어야 한다. 어떤 지도의 말이 이미 끝 위치에 있더라도, 바샤는 다음 턴에도 그 말을 반드시 옮겨야 한다.

바샤는 모든 지도의 말이 동시에 끝 위치에 놓이게 하려면 최소 몇 턴이 필요한지 궁금해졌다. 그가 알아낼 수 있도록 도와주자.

각 지도 안에서는 어떤 위치에서든 말을 다른 어떤 위치로도 옮길 수 있음이 보장된다. 중간 위치를 거쳐야 할 수도 있다.

입력

첫째 줄에 지도의 수 kk가 주어진다 (1≤k≤101 \le k \le 10).

이어서 kk개의 블록이 지도를 설명한다. 각 블록의 첫째 줄에는 두 정수 n_in\_i와 m_im\_i가 주어진다 (2≤n_i≤502 \le n\_i \le 50, 1≤m_i≤15001 \le m\_i \le 1500). 이는 ii번째 지도의 위치 수와 선분 수를 나타낸다. 위치는 1부터 n_in\_i까지의 번호가 붙어 있고, 시작 위치는 1번, 끝 위치는 n_in\_i번이다. 다음 m_im\_i개 줄에는 해당 선분으로 이어진 두 위치의 번호가 주어진다.

출력

모든 지도의 말이 동시에 끝 위치에 놓이게 하는 턴의 수열이 존재하면, 그러한 수열의 최소 길이를 출력한다. 존재하지 않으면 <<Impossible>>을 출력한다.

예제1

  1. 예제 1

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