Wind of Change

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

요약
같은 정점 집합 위의 두 가중 트리에서 거리를 두 트리 거리의 합으로 정의할 때, 각 정점마다 다른 정점까지의 최솟값을 구한다.
난이도

어려움10점 중 9점

유형
트리, 분할 정복, DFS, 최단 경로
정답자
아직 제출이 없습니다

문제

이 문제의 원래 제목은 "Tree Product Metric Voronoi Diagram Query Without One Point"이다.

크기 NN인 두 가중치 트리 T1, T2T_1,\ T_2가 주어지며, 각 정점에는 1…N1 \ldots N의 번호가 붙어 있다. dist(T1, i, j)dist(T_1,\ i,\ j)를 트리 T1T_1에서 노드 ii에서 jj로 가는 최단 경로의 가중치 합으로 정의하고, dist(T2, i, j)dist(T_2,\ i,\ j)도 같은 방식으로 정의하자.

크기 NN인 점 집합을 생각하자. 맨해튼 거리와 비슷하게(실제로 이는 그 일반화이다), 두 점 1≤i, j≤N1 \le i,\ j \le N 사이의 거리를 두 거리의 합 dist(T1, i, j)+dist(T2, i, j)dist(T_1,\ i,\ j) + dist(T_2,\ i,\ j)로 정의할 수 있다. 각 1≤i≤N1 \le i \le N에 대해 점 ii에서 가장 가까운 점을 구하자. 즉, 각 ii에 대해 minj≠idist(T1, i, j)+dist(T2, i, j)min_{j \neq i}{dist(T_1,\ i,\ j) + dist(T_2,\ i,\ j)}를 구해야 한다.

입력

첫 줄에 두 트리의 정점 수를 나타내는 정수 NN이 주어진다. (2≤N≤250 0002 \le N \le 250\,000)

다음 N−1N-1개의 줄에는 첫 번째 트리의 정보가 주어진다. 각 줄에는 세 정수 Si, Ei, WiS_i,\ E_i,\ W_i가 주어지며, 이는 두 정점 Si, EiS_i,\ E_i를 잇는 가중치 WiW_i의 간선이 있음을 나타낸다. (1≤Si, Ei≤N, 1≤Wi≤1091 \le S_i,\ E_i \le N,\ 1 \le W_i \le 10^9)

그다음 N−1N-1개의 줄에는 두 번째 트리의 정보가 같은 형식으로 주어진다.

출력

NN개의 줄을 출력한다. 각 줄에는 정수 하나가 들어간다. ii번째 줄에는 점 ii에 대한 답을 출력한다.

예제2

  1. 예제 1

    입력
    5
    1 2 10
    2 4 20
    3 4 30
    4 5 50
    1 2 15
    1 3 25
    1 4 35
    1 5 25
    
    예상 출력
    25
    25
    85
    65
    105
    
  2. 예제 2

    입력
    9
    5 7 6577
    4 5 8869
    5 9 9088
    2 1 124
    6 2 410
    2 8 8154
    4 8 4810
    3 4 4268
    3 9 763
    6 2 8959
    7 4 7984
    3 8 504
    8 6 9085
    5 2 4861
    1 9 8539
    1 7 7834
    
    예상 출력
    18084
    9369
    9582
    23430
    26694
    9369
    23430
    9582
    22988