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

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

나무에 내리는 햇빛

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

요약
u에서 v까지 트리 경로 위에서 질의 방향과의 내적이 가장 작은 노드를 모두 보고합니다.
난이도

어려움10점 중 8점

유형
트리, 세그먼트 트리, 기하
정답자
아직 제출이 없습니다

문제

나무를 바로 위에서 내려다보자. 가지를 간선으로, 가지가 갈라지거나 끝나는 지점을 정점으로 보면 위에서 본 모습은 평면에 그려진 그래프가 된다. 그림에서 간선끼리 교차할 수는 있지만 그래프 자체는 트리다. 즉 연결되어 있고 사이클이 없으며, 2차원 좌표가 하나씩 붙은 정점 nn개와 간선 n−1n - 1개로 이루어진다.

질의는 네 수 uu, vv, xx, yy로 주어진다. uu와 vv는 정점 두 개이고, 벡터 (x,y)(x, y)는 햇빛이 나아가는 방향이다. 햇빛은 광선 하나가 아니라 무한히 먼 곳에서 출발해 (x,y)(x, y) 방향으로 나아가는 평행한 광선의 다발이다. 아래 그림은 (x,y)=(2,1)(x, y) = (2, 1)인 경우로, 빛은 왼쪽 아래에서 들어오고 모든 광선은 벡터 (2,1)(2, 1)과 평행하다.

(2, 1) 방향으로 나아가는 평행 광선

빛이 먼저 닿는 정점일수록 더 따뜻하다. 광선이 (x,y)(x, y) 방향으로 나아가므로, 좌표가 (px,py)(p_x, p_y)인 정점은 xpx+ypyx p_x + y p_y가 작을수록 빛을 먼저 받는다. 개미가 uu에서 vv까지 트리의 유일한 최단 경로를 따라 이동한다. 이 경로 위의 정점 가운데 햇빛이 가장 먼저 닿는 정점, 즉 xpx+ypyx p_x + y p_y가 최소인 정점을 모두 구하라.

정점 14개짜리 트리

두 번째 그림은 정점 14개로 이루어진 트리다. u=14u = 14, v=4v = 4, x=1x = 1, y=0y = 0이면 경로는 14, 11, 1, 3, 4이고 빛이 왼쪽에서 들어오므로 정점 3과 11에 햇빛이 가장 먼저 닿는다. u=13u = 13, v=9v = 9, x=1x = 1, y=−1y = -1이면 경로는 13, 11, 1, 6, 9이고 빛이 왼쪽 위에서 들어오므로 정점 1, 6, 11에 햇빛이 가장 먼저 닿는다.

입력

첫째 줄에 테스트 케이스의 수 TT가 주어진다 (T≤10T \le 10). 각 테스트 케이스의 첫 줄에는 정점의 수 nn이 주어진다 (1≤n≤1051 \le n \le 10^5). 다음 nn개 줄에는 정점의 좌표가 한 줄에 하나씩 주어지며, 그중 ii번째 줄이 정점 ii의 좌표다 (∣x∣,∣y∣≤105|x|, |y| \le 10^5). 좌표가 같은 정점이 여러 개 있을 수 있다. 다음 n−1n - 1개 줄에는 간선이 잇는 두 정점의 번호가 주어지고, 번호는 1 이상 nn 이하다. 입력은 항상 올바른 트리다. 다음 줄에는 질의의 수 QQ가 주어진다 (1≤Q≤1.6×1051 \le Q \le 1.6 \times 10^5). 다음 QQ개 줄에는 질의가 uu vv xx yy 형태로 하나씩 주어진다 (1≤u,v≤n1 \le u, v \le n, ∣x∣,∣y∣≤105|x|, |y| \le 10^5). 벡터 (x,y)(x, y)는 영벡터가 아니고, uu와 vv는 같을 수 있다. 모든 테스트 케이스가 최대 크기는 아니지만, 정점 수와 질의 수가 가장 큰 케이스가 적어도 하나 있다.

출력

각 테스트 케이스마다 먼저 Case k:를 한 줄에 출력한다. kk는 1부터 세는 테스트 케이스 번호다. 그 뒤로 질의마다 한 줄씩, 햇빛이 가장 먼저 닿는 정점의 번호를 오름차순으로 정렬해 공백 하나로 구분해 출력한다. 줄의 처음과 끝에는 공백을 넣지 않는다. 입력 전체에서 출력하는 번호는 최대 3×1053 \times 10^5개다.

예제2

  1. 예제 1

    입력
    2
    4
    0 0
    1 1
    0 1
    1 0
    1 2
    1 3
    1 4
    3
    2 3 0 -1
    2 3 0 1
    2 3 1 -1
    14
    0 0
    6 0
    -3 5
    -2 7
    -6 6
    4 4
    3 6
    7 5
    7 3
    4 2
    -3 -3
    -5 -1
    -4 -5
    0 -4
    1 2
    1 3
    3 4
    3 5
    1 6
    6 7
    6 8
    6 9
    6 10
    1 11
    11 12
    11 13
    11 14
    2
    14 4 1 0
    13 9 1 -1
    
    예상 출력
    Case 1:
    2 3
    1
    3
    Case 2:
    3 11
    1 6 11
    
  2. 예제 2

    입력
    3
    1
    0 0
    2
    1 1 1 0
    1 1 -7 99999
    2
    5 5
    -5 -5
    1 2
    5
    1 2 1 1
    2 1 1 1
    1 2 -1 -1
    1 1 3 -4
    2 2 0 1
    3
    0 0
    2 0
    1 3
    1 2
    1 3
    4
    2 3 0 1
    2 3 0 -1
    2 3 1 0
    3 2 -1 0
    
    예상 출력
    Case 1:
    1
    1
    Case 2:
    2
    2
    1
    1
    2
    Case 3:
    1 2
    3
    1
    2