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

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

비밀 요원

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

요약
평면 직선 그래프(성벽)에서 벽을 넘는 비용이 벽의 높이일 때, 무한대 지점에서 시작해 주어진 순서대로 여러 지점을 방문하는 각 구간의 최소 비용을 구한다.
난이도

어려움10점 중 9점

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

문제

2000년 전, 지금 이 자리에는 도시국가 인호국의 성이 서 있었다. 인호국의 성은 11번부터 NN번까지 번호가 붙은 망루 NN개와, 두 망루를 잇는 성벽 MM개로 이루어져 있다. 성벽은 선분 모양이고, 어떤 두 성벽도 망루가 아닌 지점에서는 만나지 않으며, 어느 망루에서든 성벽을 타고 다른 모든 망루로 갈 수 있다. 인호국의 왕 인호는 이 성 안에 국가 기밀을 숨겨 두었다.

경쟁 관계인 도시국가 민석국의 왕 민석이는 그 기밀을 캐내려고 비밀 요원을 성으로 들여보낸다. 요원은 매우 빨라서 성벽이 가로막지 않는 한 이동 시간을 무시할 수 있다. 성벽을 넘을 때는 그 성벽의 높이만큼 시간이 걸린다. 망루는 통과하지 못하므로, 요원은 언제나 망루가 아닌 지점에서 성벽을 넘는다.

민석이는 요원에게 지점 QQ개를 순서대로 방문하라고 명령했다. 각 지점은 성벽이나 망루와 겹치지 않는다. 요원은 성에서 무한히 멀리 떨어진 곳에서 출발해 11번 지점, 22번 지점의 순서로 찾아간다. 각 구간마다 요원이 쓰는 최소 시간을 구하자.

입력

첫째 줄에 망루의 개수 NN (1≤N≤200 0001 \le N \le 200\,000)과 성벽의 개수 MM (N−1≤M≤N+100N-1 \le M \le N+100)이 주어진다.

다음 NN개 줄에는 ii번 망루의 좌표 xix_i와 yiy_i가 순서대로 주어진다. (∣xi∣,∣yi∣≤109|x_i|, |y_i| \le 10^9)

다음 MM개 줄에는 성벽이 잇는 두 망루의 번호 uiu_i와 viv_i, 그리고 그 성벽의 높이 hih_i가 주어진다. (1≤ui,vi≤N1 \le u_i, v_i \le N, ui≠viu_i \ne v_i, 1≤hi≤1091 \le h_i \le 10^9)

같은 두 망루를 잇는 성벽은 많아야 하나이고, 어떤 두 성벽도 망루가 아닌 지점에서는 만나지 않는다. 임의의 두 망루 사이는 성벽을 타고 오갈 수 있다.

다음 줄에 명령의 개수 QQ (1≤Q≤200 0001 \le Q \le 200\,000)가 주어진다.

다음 QQ개 줄에는 방문할 지점의 좌표 aia_i와 bib_i가 순서대로 주어진다. (∣ai∣,∣bi∣≤109|a_i|, |b_i| \le 10^9)

모든 지점은 성벽이나 망루와 겹치지 않는다.

출력

QQ개 줄을 출력한다. ii번째 줄에는 i−1i-1번 지점에서 ii번 지점으로 가는 최소 시간을 출력한다. 00번 지점의 좌표는 (∞,∞)(\infty, \infty), 즉 성에서 무한히 먼 곳으로 본다.

힌트

아래 그림은 망루 4개와 성벽 5개로 이루어진 성, 그리고 순서대로 방문하는 지점 3개를 나타낸다.

예제3

  1. 예제 1

    입력
    4 5
    1 2
    3 1
    3 3
    5 2
    1 2 4
    1 3 5
    2 3 2
    2 4 5
    3 4 3
    3
    2 2
    4 2
    6 2
    
    예상 출력
    4
    2
    3
    
  2. 예제 2

    입력
    8 9
    0 0
    20 0
    20 20
    0 20
    5 5
    15 5
    15 15
    5 15
    1 2 10
    2 3 12
    3 4 11
    4 1 13
    5 6 1
    6 7 2
    7 8 3
    8 5 4
    1 5 1000000000
    5
    10 10
    18 10
    25 10
    0 25
    10 3
    
    예상 출력
    11
    1
    10
    0
    10
    
  3. 예제 3

    입력
    6 7
    0 0
    5 0
    10 0
    0 10
    5 10
    10 10
    1 2 1
    2 3 1
    4 5 1
    5 6 1
    1 4 1
    3 6 1
    2 5 100
    4
    2 5
    8 5
    2 5
    20 20
    
    예상 출력
    1
    2
    2
    1