불 뿌리기

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

요약
트리에서 각 작업이 u로부터 r_u 이내이면서 v로부터 r_v 이내인 모든 방에 시각 t에 불을 붙이고, 불이 간선마다 K씩 번질 때 각 방이 처음 불붙는 시각을 구한다.
난이도

어려움10점 중 8점

유형
그래프, 트리, 최단 경로, BFS
정답자
아직 제출이 없습니다

문제

시루가 운영하는 방 탈출 카페는 NN개의 방이 N−1N-1개의 통로로 연결되어 있는 트리 형태이다. 각 방은 11부터 NN까지의 번호가 붙어 있으며, 서로 다른 두 방은 통로를 통해 이동할 수 있다. 이때 두 방 uu, vv의 거리는 uu에서 vv로 가기 위해 통과해야 하는 통로의 최소 개수로 정의한다.

시루는 고객들이 진정한 탈출을 체험하도록 하기 위해 총 MM번 불을 지르려고 한다. 한 번의 불 뿌리기 작업은 5개의 정수 (t,u,v,r_u,r_v)(t, u, v, r\_u, r\_v)로 정의할 수 있다. 이는 시각 tt에, uu번 방과 거리가 r_ur\_u 이하이면서 vv번 방과 거리가 r_vr\_v 이하인 모든 방에 불을 지른다는 의미다. 또한, 어떤 방에 불이 붙었다면 KK 시간 후에 인접한 방으로 불이 옮겨 붙는다.

MM번의 불 뿌리기 작업 계획이 주어지면, 각 방마다 처음으로 불이 붙는 시각을 구하는 프로그램을 작성하라.

입력

첫째 줄에 방의 개수 NN과 불 뿌리기 작업 횟수 MM, 불이 전파되는데 걸리는 시간을 나타내는 정수 KK가 공백으로 구분되어 주어진다.

그다음 줄부터 N−1N-1개의 줄에 걸쳐, 통로가 연결하는 두 방의 번호 U_i,V_iU\_i, V\_i가 공백으로 구분되어 주어진다.

그다음 줄부터 MM개의 줄에 걸쳐, 불 뿌리기 작업을 나타내는 다섯 개의 정수 t,u,v,r_u,r_vt, u, v, r\_u, r\_v가 공백으로 구분되어 주어진다.

출력

NN개의 줄에 걸쳐 답을 출력한다.

만약 ii번째 방에 불이 붙는다면, ii번째 줄에 그 최초의 시각을 출력한다. 그렇지 않다면 −1-1을 출력한다.

제한

  • 2≤N≤100,0002 \le N \le 100\\,000
  • 1≤M≤200,0001 \le M \le 200\\,000
  • 1≤K≤501 \le K \le 50
  • 1≤U_i,V_i≤N1 \le U\_i, V\_i \le N (U_i≠V_iU\_i \ne V\_i)
  • 1≤t≤5,000,0001 \le t \le 5\\,000\\,000
  • 1≤u,v≤N1 \le u,v \le N
  • 0≤r_u,r_v≤N0 \le r\_u,r\_v \le N
  • 방과 통로는 트리 구조를 이룬다.

예제3

  1. 예제 1

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

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

    입력
    7 2 2
    1 2
    2 3
    2 4
    1 5
    5 6
    6 7
    2 1 2 2 1
    1 2 7 3 3
    
    예상 출력
    1
    2
    2
    2
    1
    1
    3