만드는 중입니다

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

사자와 얼룩말

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

요약
트리에서 제브라가 정점 v에서 출발하고 사자와의 거리가 d일 때, 제브라가 최적으로 도망치면 사자가 잡는 데 걸리는 시간을 각 질의마다 구합니다.
난이도

어려움10점 중 8점

유형
트리, DFS, 그리디
정답자
아직 제출이 없습니다

문제

트리가 NN개의 정점으로 주어진다. 이 트리에서 술래잡기 게임을 한다. 게임은 여러 라운드로 이루어진다. 각 라운드에는 두 플레이어가 있다. 잡는 쪽인 사자와 도망치는 쪽인 얼룩말이다. 라운드 시작 시 얼룩말과 사자는 서로 다른 두 정점에 있다. 사자는 얼룩말의 위치를 항상 알고, 1초에 간선 하나의 속도로 얼룩말을 쫓는다. 얼룩말은 사자의 위치를 모르지만 사자와의 거리는 항상 안다. 얼룩말은 매초 다음 둘 중 하나를 고른다. 인접한 정점으로 1초 동안 이동하거나, 현재 정점에 1초 동안 머문다. 얼룩말이 간선 위나 정점에서 사자와 만나면 라운드가 끝난다. 두 플레이어가 같은 간선을 따라 서로를 향해 움직이면 이동을 시작하고 0.5초 뒤에 만난다. 얼룩말은 사자가 가능한 모든 초기 정점에 대해, 사자와 만나는 최소 시간의 최솟값이 최대가 되도록 행동한다. Q개의 라운드가 주어진다. i번째 라운드에서 얼룩말은 정점 viv_i에서 출발하고, 사자와의 거리는 did_i이다. 각 라운드에 대해 양측이 전략대로 행동할 때 라운드가 끝나는 최소 시간을 구하라.

입력

첫 줄에 트리의 정점 수 NN과 라운드 수 QQ가 주어진다(2≤N≤1052 \le N \le 10^5, 1≤Q≤1051 \le Q \le 10^5). 이후 N−1N-1개의 줄에 간선으로 연결된 두 정점 aia_i, bib_i가 주어진다. 주어진 그래프는 트리이다. 이후 QQ개의 줄에 얼룩말의 시작 정점 vjv_j와 얼룩말에서 사자까지의 거리 djd_j가 주어진다(1≤vj≤N1 \le v_j \le N, 1≤dj≤N−11 \le d_j \le N-1). vjv_j에서 거리가 djd_j인 정점 wjw_j가 적어도 하나 존재한다고 가정해도 된다.

출력

각 질의에 대해 양측이 전략대로 행동할 때 라운드가 끝나는 최소 시간을 정수 하나로 출력한다.

힌트

예제 1의 첫 번째 라운드에서 얼룩말은 정점 1에 있고 사자와의 거리는 44이므로, 사자는 정점 5에 있다. 최적 전략은 정점 1에 최대한 오래 머무르는 것이며, 답은 44이다. 두 번째 라운드에서 얼룩말은 정점 3에 있고 사자와의 거리는 11이므로, 사자는 정점 2 또는 정점 4에 있다. 얼룩말이 정점 2 방향으로 움직이면, 사자가 정점 2에서 출발한 경우 0.5초 뒤 간선 위에서 만나고, 정점 4에서 출발한 경우 정점 1에서 3초 뒤에 만난다. 따라서 이 전략의 최소 시간은 0.50.5이다. 정점 4 방향으로 움직여도 최소 시간은 0.50.5이다. 얼룩말이 정점 3에 머물면, 사자가 정점 2에서 출발하든 정점 4에서 출발하든 1초 뒤에 만난다. 따라서 답은 11이다.

예제2

  1. 예제 1

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

    입력
    11 2
    1 2
    2 3
    1 4
    4 5
    1 6
    6 7
    7 8
    1 9
    9 10
    10 11
    3 2
    10 4
    
    예상 출력
    2
    5