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

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

버스 정기권

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

요약
무방향 구역 그래프와 여러 순서 있는 버스 경로가 주어질 때, 모든 경로를 포함하는 중심 구역과 최소 별 반경을 구한다.
난이도

어려움10점 중 8점

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

문제

버스를 자주 이용하다 보니 개별 표를 살 때마다 드는 비용이 점점 커지고 있다. 그래서 버스 정기권을 사는 편이 이득인지 따져 보려 한다.

네 나라(그리고 네덜란드)의 버스 시스템은 다음과 같이 동작한다. 정기권을 살 때 중심 구역과 별 값을 정해야 한다. 중심 구역까지의 거리가 별 값보다 작은 구역은 어디든 자유롭게 이동할 수 있다. 예를 들어 별 값이 1이면 중심 구역에서만 이동할 수 있다. 별 값이 2이면 인접한 모든 구역에서도 이동할 수 있고, 그 이상도 같은 방식이다.

자주 다니는 모든 버스 여행 목록이 있을 때, 정기권으로 이 여행을 모두 할 수 있게 하는 최소 별 값을 구하려 한다. 하지만 항상 쉬운 일은 아니다. 예를 들어 다음 그림을 보자.

여기서는 A에서 B로, 그리고 B에서 D로 이동할 수 있어야 한다. 가장 좋은 중심 구역은 7400이고, 이때 별 값은 4만 있으면 된다. 이 구역은 여행 중에 한 번도 방문하지 않는다는 점에 주목하자.

입력

첫째 줄에 정수 t (1 ≤ t ≤ 100)가 주어진다. 이는 테스트 케이스의 수이다. 각 테스트 케이스는 다음과 같다.

  • 한 줄에 두 정수 nz (2 ≤ nz ≤ 9 999)와 nr (1 ≤ nr ≤ 10)이 주어진다. 각각 구역의 수와 버스 여행의 수이다.
  • nz개의 줄이 주어진다. 각 줄은 i번째 구역을 식별하는 정수 idi (1 ≤ idi ≤ 9 999)와 그 구역에 인접한 구역의 수 mzi (1 ≤ mzi ≤ 10)로 시작하고, 이어서 인접한 구역의 번호 mzi개가 주어진다.
  • nr개의 줄이 주어진다. 각 줄은 i번째 버스 여행이 방문하는 구역의 수 mri (1 ≤ mri ≤ 20)로 시작하고, 이어서 버스가 방문하는 순서대로 지나는 구역의 번호 mri개가 주어진다.

모든 구역은 직접 또는 다른 구역을 거쳐 연결되어 있다.

출력

각 테스트 케이스마다:

  • 최소 별 값과 그 최소 별 값을 달성하는 중심 구역의 id를 한 줄에 출력한다. 가능한 경우가 여러 개라면 번호가 가장 작은 구역을 선택한다.

예제1

  1. 예제 1

    입력
    1
    17 2
    7400 6 7401 7402 7403 7404 7405 7406
    7401 6 7412 7402 7400 7406 7410 7411
    7402 5 7412 7403 7400 7401 7411
    7403 6 7413 7414 7404 7400 7402 7412
    7404 5 7403 7414 7415 7405 7400
    7405 6 7404 7415 7407 7408 7406 7400
    7406 7 7400 7405 7407 7408 7409 7410 7401
    7407 4 7408 7406 7405 7415
    7408 4 7409 7406 7405 7407
    7409 3 7410 7406 7408
    7410 4 7411 7401 7406 7409
    7411 5 7416 7412 7402 7401 7410
    7412 6 7416 7411 7401 7402 7403 7413
    7413 3 7412 7403 7414
    7414 3 7413 7403 7404
    7415 3 7404 7405 7407
    7416 2 7411 7412
    5 7409 7408 7407 7405 7415
    6 7415 7404 7414 7413 7412 7416
    
    예상 출력
    4 7400