만드는 중입니다

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

사막 여행

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

요약
오아시스 사이를 오가는 최대 50만 개의 여행마다, 경로에서 연속한 두 지점 사이 유클리드 거리의 최댓값을 가장 작게 만든 값을 출력한다.
난이도

보통10점 중 7점

유형
최소 신장 트리, 그래프, 수학
정답자
아직 제출이 없습니다

문제

당신은 사막에 갇혀 있다. 사막은 직교 좌표 평면으로 생각할 수 있다. 사막에는 여러 오아시스가 있고, 각 오아시스의 xx좌표와 yy좌표를 알고 있다. 당신은 오아시스 쌍 사이를 오가는 여러 번의 여행을 할 것이다. 각 여행에는 출발 오아시스와 도착 오아시스가 정해져 있다. 어떤 여행이든 가는 도중에 다른 오아시스에 얼마든지 들를 수 있다.

사막을 이동하려면 물이 필요하다. 사막에서는 거리 11을 이동할 때마다 물 11이 필요하다. 각 여행에서 사용할 물통의 크기를 정해야 한다. 필요한 양보다 큰 물통을 들고 다닐 이유가 없으므로, 각 여행에는 필요한 최소 크기의 물통을 사용하려고 한다.

여행 중 들르는 각 오아시스에서 물통을 다시 채워 다음 오아시스까지 버틸 수 있다. 따라서 그 여행의 경로에서 연속한 두 오아시스 사이의 유클리드 거리의 최댓값이 필요한 물통의 크기를 결정한다. 예를 들어 (0,0)(0,0)에서 (2,4)(2,4)를 거쳐 (4,5)(4,5)로 이동했다면 최대 거리는 (0,0)(0,0)과 (2,4)(2,4) 사이의 거리인 약 4.4724.472이다. 이 거리가 (2,4)(2,4)와 (4,5)(4,5) 사이의 거리보다 크기 때문이다. 이 값이 그 여행에 필요한 물통의 크기를 결정한다.

오아시스의 수와 여러 여행이 주어진다. 각 여행에는 출발 오아시스와 도착 오아시스가 정해져 있다. 각 여행에서 연속한 두 오아시스 사이의 유클리드 거리의 최댓값이 최소가 되도록 경로를 정하고, 그 최솟값을 구하여라.

입력

첫째 줄에는 오아시스의 수 OO가 주어진다. (1≤O≤50001 \le O \le 5000)

다음 OO개 줄 중 ii번째 줄에는 ii번째 오아시스의 좌표 xix_i와 yiy_i가 주어진다. (−106≤xi≤106-10^6 \le x_i \le 10^6, −106≤yi≤106-10^6 \le y_i \le 10^6)

오아시스에는 11부터 OO까지의 번호가 붙어 있다.

그다음 줄에는 여행의 수 QQ가 주어진다. (1≤Q≤5000001 \le Q \le 500000)

다음 QQ개 줄 중 ii번째 줄에는 ii번째 여행의 출발 오아시스 번호 sis_i와 도착 오아시스 번호 eie_i가 주어진다. (1≤si≤O1 \le s_i \le O, 1≤ei≤O1 \le e_i \le O)

출력

각 여행마다 한 줄에 하나씩, 그 여행에 필요한 물통 크기의 최솟값을 출력한다. 이 값은 sis_i번 오아시스에서 eie_i번 오아시스로 가는 경로를 적절히 정했을 때, 그 경로에서 연속한 두 오아시스 사이의 유클리드 거리의 최댓값으로 가능한 최솟값이다. 정답과의 절대 오차 또는 상대 오차가 10−610^{-6} 이하이면 정답으로 인정된다.

예제1

  1. 예제 1

    입력
    6
    0 0
    3 7
    1 2
    2 0
    4 5
    2 5
    3
    1 2
    6 5
    3 1
    
    예상 출력
    3.1622776601683795
    2.0
    2.23606797749979