웜홀

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

요약
행성 좌표와 방향성 웜홀(통행 거리 0)이 주어질 때 각 질의의 두 행성 사이 최단 이동 거리를 구합니다.
난이도

보통10점 중 4점

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

문제

지구에서 인류에게 남은 시간이 얼마 없다. 쿠퍼와 아멜리아는 별들 사이에 인류의 미래가 있는지 확인하려고 이 은하 밖으로 나가는 임무에 자원했다. 천문학자들은 사람이 살 만한 행성을 여러 개 찾아냈고, 그중 몇 쌍이 웜홀로 이어져 있다는 사실도 알아냈다. 웜홀을 타고 이동하면 이동 거리는 0이다. 그 밖의 두 행성 사이를 이동하는 거리는 두 행성의 유클리드 거리다.

행성과 웜홀이 주어질 때, 질의로 주어진 두 행성 사이의 최단 이동 거리를 구하라.

입력

  • 첫 줄에 테스트 케이스의 수 TT (1≤T≤101 \le T \le 10)가 주어진다.
  • 각 테스트 케이스는 행성 목록, 웜홀 목록, 질의 목록으로 이루어진다.
  • 행성 목록의 첫 줄에 행성의 수 pp (1≤p≤601 \le p \le 60)가 주어진다. 이어지는 pp개의 줄에 행성의 이름과 정수 좌표가 name x y z 형식으로 주어진다 (0≤x,y,z≤2×1060 \le x, y, z \le 2 \times 10^6). 이름은 ASCII 알파벳과 숫자로만 이루어지고 항상 알파벳으로 시작하며, 길이는 50자를 넘지 않는다. 이름은 대소문자를 구분한다. 즉 Earth와 earth는 서로 다른 행성이다. 좌표의 단위는 파섹이다.
  • 웜홀 목록의 첫 줄에 웜홀의 수 ww (0≤w≤400 \le w \le 40)가 주어진다. 이어지는 ww개의 줄에 웜홀 하나를 나타내는 두 행성 이름이 공백으로 구분되어 주어진다. 앞의 이름이 입구, 뒤의 이름이 출구다. 웜홀은 입구에서 출구 방향으로만 지날 수 있고, 출구로 들어갈 수는 없다. 두 이름은 모두 앞의 행성 목록에 나온 이름이다.
  • 질의 목록의 첫 줄에 질의의 수 qq (1≤q≤201 \le q \le 20)가 주어진다. 이어지는 qq개의 줄에 두 행성 이름이 공백으로 구분되어 주어진다. 두 이름은 모두 행성 목록에 나온 이름이며, 같은 이름이 두 번 나올 수도 있다.

출력

각 테스트 케이스마다 먼저 Case i:를 한 줄에 출력한다. 여기서 ii는 테스트 케이스의 번호이고 1부터 시작한다.

그다음 그 테스트 케이스의 질의마다 한 줄에 The distance from planet1 to planet2 is d parsecs.를 출력한다. planet1과 planet2는 질의에 주어진 이름을 그대로 쓰고, d는 planet1에서 planet2로 가는 최단 이동 거리를 가장 가까운 정수로 반올림한 값이다. 값이 정확히 두 정수의 중간이면 큰 쪽으로 올린다.

예제1

  1. 예제 1

    입력
    3
    4
    Earth 0 0 0
    Proxima 5 0 0
    Barnards 5 5 0
    Sirius 0 5 0
    2
    Earth Barnards
    Barnards Sirius
    6
    Earth Proxima
    Earth Barnards
    Earth Sirius
    Proxima Earth
    Barnards Earth
    Sirius Earth
    3
    z1 0 0 0
    z2 10 10 10
    z3 10 0 0
    1
    z1 z2
    3
    z2 z1
    z1 z2
    z1 z3
    2
    Mars 12345 98765 87654
    Jupiter 45678 65432 11111
    0
    1
    Mars Jupiter
    
    예상 출력
    Case 1:
    The distance from Earth to Proxima is 5 parsecs.
    The distance from Earth to Barnards is 0 parsecs.
    The distance from Earth to Sirius is 0 parsecs.
    The distance from Proxima to Earth is 5 parsecs.
    The distance from Barnards to Earth is 5 parsecs.
    The distance from Sirius to Earth is 5 parsecs.
    Case 2:
    The distance from z2 to z1 is 17 parsecs.
    The distance from z1 to z2 is 0 parsecs.
    The distance from z1 to z3 is 10 parsecs.
    Case 3:
    The distance from Mars to Jupiter is 89894 parsecs.