만드는 중입니다

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

접두사 최댓값

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

요약
가중치가 있는 트리에서 각 쿼리의 두 정점 u, v를 잇는 경로의 간선 가중치 접두사 최댓값 합을 구합니다.
난이도

어려움10점 중 9점

유형
트리, 분할 정복, 이분 탐색
정답자
아직 제출이 없습니다

문제

트리는 임의의 두 정점이 정확히 하나의 경로로 연결된 무방향 그래프입니다. 정점이 nn개인 가중치 트리가 주어집니다. w(i,j)w(i, j)는 정점 ii와 jj를 잇는 간선의 가중치입니다. 정점 uu에서 정점 vv로 가는 단순 경로 P=(u,s1,…,st−1,v)P = (u, s_1, \dots, s_{t-1}, v)를 생각합니다. 경로 PP의 간선 가중치 수열을 a=(a1,a2,…,at)a = (a_1, a_2, \dots, a_t)라 하면, a1=w(u,s1)a_1 = w(u, s_1), a2=w(s1,s2)a_2 = w(s_1, s_2), …\dots, at=w(st−1,v)a_t = w(s_{t-1}, v)입니다.

f(u,v)=∑i=1tmax⁡j=1…i{aj}f(u, v) = \sum_{i=1}^{t} \max_{j=1 \dots i}\{a_j\}는 aa의 접두사 최댓값의 합입니다. qq개의 질의가 주어지며, 각 질의는 두 정수 uu와 vv로 표현됩니다. 각 질의에 대해 f(u,v)f(u, v)를 구하세요.

입력

첫 줄에 트리의 정점 수 nn과 질의 수 qq가 공백으로 구분되어 주어집니다 (1≤n≤2⋅1051 \le n \le 2 \cdot 10^5, 1≤q≤1061 \le q \le 10^6).

이어지는 n−1n - 1개의 줄에는 각각 세 정수 aia_i, bib_i, cic_i가 주어집니다 (1≤ai,bi≤n1 \le a_i, b_i \le n, ai≠bia_i \ne b_i, 1≤ci≤1091 \le c_i \le 10^9). 이는 ii번째 간선이 잇는 두 정점과 그 가중치입니다. 주어지는 간선들은 트리를 이룹니다.

이어지는 qq개의 줄에는 각각 두 정수 uiu_i와 viv_i (1≤ui,vi≤n1 \le u_i, v_i \le n)가 주어집니다. 이는 ii번째 질의입니다.

출력

qq개의 줄을 출력합니다. ii번째 줄에는 ii번째 질의의 답을 정수 하나로 출력합니다.

예제1

  1. 예제 1

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