만드는 중입니다

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

두 경로

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

요약
가중치가 있는 트리에서 각 질의마다 u에서 출발하는 경로와 v에서 출발하는 경로를 서로 겹치지 않게 고릅니다. 그리고 A×W(P1)+B×W(P2)의 최댓값을 구합니다.
난이도

어려움10점 중 8점

유형
트리, 동적 계획법, 수학
정답자
아직 제출이 없습니다

문제

정점이 NN개인 트리 TT가 주어진다. 각 간선에는 양의 정수 가중치가 있다. 경로 PP의 가중치 W(P)W(P)는 PP에 포함된 간선 가중치의 합이다.

총 QQ개의 질의가 주어진다. 각 질의는 정점 uu, vv와 정수 AA, BB로 이루어진다. 각 질의마다 다음 조건을 만족하는 단순 경로 P1P_1, P2P_2를 찾는다.

  • P1P_1과 P2P_2는 정점을 공유하지 않는다.
  • P1P_1은 uu에서 시작하고, P2P_2는 vv에서 시작한다.

이 조건을 만족하는 모든 P1P_1, P2P_2 중에서 A×W(P1)+B×W(P2)A \times W(P_1) + B \times W(P_2)가 최대가 되는 값을 구한다.

입력

첫 줄에 정수 NN과 QQ가 공백으로 구분되어 주어진다.

이어서 N−1N-1개의 줄에 간선 정보 uu, vv, ww가 주어진다. 이는 정점 uu와 vv를 가중치 ww인 간선이 잇는다는 뜻이다.

그다음 QQ개의 줄에 질의 정보 uu, vv, AA, BB가 주어진다.

출력

각 질의에 대해 A×W(P1)+B×W(P2)A \times W(P_1) + B \times W(P_2)의 최대값을 한 줄에 하나씩 출력한다.

제한

  • 2≤N≤200 0002 \le N \le 200\,000
  • 1≤Q≤500 0001 \le Q \le 500\,000
  • 간선과 질의 모두에 대해 1≤u<v≤N1 \le u < v \le N
  • 1≤w≤10 0001 \le w \le 10\,000
  • 1≤A,B≤2×1091 \le A, B \le 2 \times 10^9

예제1

  1. 예제 1

    입력
    6 4
    1 2 4
    2 5 5
    2 3 7
    3 6 5
    3 4 4
    1 4 1 1
    1 4 2 1
    5 6 1 1
    5 6 1 10
    
    예상 출력
    18
    32
    18
    160