만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

은하 퀘스트

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

요약
각 질의마다 1번 행성에서 목표 행성까지 제한 시간 안에 도착하는 데 필요한 최소 연료를 구합니다. 항로마다 연료 소모량이 그 구간을 가는 데 걸리는 시간에 따라 달라집니다.
난이도

어려움10점 중 8점

유형
최단 경로, 동적 계획법, 기하
정답자
아직 제출이 없습니다

문제

당신은 우주선을 타고 은하를 여행하고 있다. 은하에는 1번부터 nn번까지 번호가 붙은 행성이 nn개 있으며, 각 행성은 3차원 공간의 점으로 나타낸다.

행성들 사이는 mm개의 우주 고속도로를 따라 이동할 수 있다. 각 고속도로는 연결된 두 행성을 잇는 직선을 따라 놓여 있다. 엔진은 1m/s21\text{m/s}^2의 가속도로 가속하거나 감속할 수 있으며, 이때 초당 1리터의 연료를 쓴다. 속도에는 제한이 없지만, 고속도로의 끝 행성에 도착할 때마다 반드시 완전히 멈춰야 한다.

고속도로는 연결된 두 행성 이외의 행성을 지나갈 수 있다. 하이퍼스페이스 기술 덕분에 우주선은 그런 행성을 멈추지 않고 그대로 통과한다. 다만 고속도로 도중에 다른 고속도로로 갈아탈 수는 없으므로, 고속도로는 항상 처음부터 끝까지 전부 달려야 한다.

그림 G.1: 첫 번째 입력의 그림이다. 고속도로는 파란색으로, 1번 행성에서 3번 행성까지의 경로가 표시되어 있다. 고속도로 시작점의 초록색은 가속을, 끝점의 빨간색은 감속을 뜻한다. 그림은 두 번째 임무의 최적 경로를 보여준다.

여러 임무를 수행해야 한다. 각 임무에서 우주선은 집 행성(1번)에서 출발하여 주어진 제한 시간 안에 목표 행성에 도달해야 한다. 각 임무마다 완료할 수 있는지 판단하고, 완료할 수 있다면 필요한 연료의 최솟값을 구한다.

입력

첫 줄에 세 정수 nn, mm, qq가 주어진다 (1≤n,m,q≤1051 \le n,m,q \le 10^5, n≥2n \ge 2). nn은 행성의 수, mm은 고속도로의 수, qq는 임무의 수이다.

다음 nn개의 줄에는 행성 ii의 좌표 xix_i, yiy_i, ziz_i가 미터 단위로 주어진다 (∣xi∣,∣yi∣,∣zi∣≤103|x_i|,|y_i|,|z_i| \le 10^3, 1≤i≤n1 \le i \le n).

다음 mm개의 줄에는 고속도로가 잇는 두 행성 aa, bb가 주어진다 (1≤a,b≤n1 \le a,b \le n, a≠ba \neq b). 고속도로는 양방향으로 이동할 수 있다.

마지막 qq개의 줄에는 임무의 목표 행성 cc와 제한 시간 tt가 초 단위로 주어진다 (2≤c≤n2 \le c \le n, 1≤t≤1031 \le t \le 10^3).

행성의 위치는 모두 서로 다르다. 같은 두 행성을 잇는 고속도로는 없다. 각 임무에서 제한 시간과 최단 완료 시간의 차이는 절대값과 상대값 모두 10−610^{-6} 이상이다.

출력

각 임무마다 목표 행성에 제한 시간 안에 도달하는 데 필요한 연료의 최솟값을 리터 단위로 출력한다. 제한 시간 안에 도달할 수 없으면 impossible을 출력한다. 답은 절대 오차 또는 상대 오차가 10−610^{-6} 이하이면 맞는 것으로 본다.

예제2

  1. 예제 1

    입력
    4 4 3
    -30 0 0
    0 0 0
    50 0 0
    -30 10 0
    1 2
    2 3
    3 4
    4 1
    2 10
    3 25
    4 7
    
    예상 출력
    impossible
    19.0538441903
    4.0000000000
    
  2. 예제 2

    입력
    4 2 5
    -3 0 2
    7 -9 -3
    4 4 -6
    8 -1 8
    1 2
    2 3
    2 1000
    2 100
    3 1000
    3 100
    4 1000
    
    예상 출력
    0.0287058122
    0.2874671888
    0.1120998619
    1.1272896971
    impossible