만드는 중입니다

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

맛집 추천

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

요약
트리 형태의 도시에서 배달 범위가 겹치지 않는 식당을 골라 선호도 합의 최댓값을 구합니다.
난이도

보통10점 중 7점

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

문제

KOI나라에는 NN개의 도시가 있다. 각 도시에는 1번부터 NN번까지의 번호가 붙어 있다.

KOI나라의 도로망은 도시를 정점으로, 도로를 양방향 간선으로 나타내면 트리가 된다. 트리는 사이클이 없는 연결 그래프이다.

맛집은 모두 MM개이며, 1번부터 MM번까지 번호가 붙어 있다. 맛집이 없는 도시도 있고, 맛집이 두 개 이상 있는 도시도 있다.

ii번 맛집(1≤i≤M1 \le i \le M)은 cic_i번 도시에 있고, 배달 가능 거리는 did_i, 고객 선호도는 gig_i이다. ii번 맛집은 cic_i번 도시에서 did_i개 이하의 도로를 거쳐 갈 수 있는 도시에만 배달할 수 있다. Ri={j∣d(ci,j)≤di}R_i = \{j \mid d(c_i, j) \le d_i\}를 ii번 맛집이 배달할 수 있는 도시의 집합이라고 하자. 여기서 d(a,b)d(a, b)는 aa번 도시와 bb번 도시 사이의 최단 경로 길이, 즉 두 도시 사이를 이동하는 데 거쳐야 하는 도로의 최소 개수이다.

당신은 배달 앱의 운영자이다. 서비스가 겹치지 않도록, MM개의 맛집 중에서 다음 조건을 만족하는 맛집의 집합 SS를 고르려고 한다. 어느 도시도 SS에 속한 두 개 이상의 맛집의 배달 가능 집합에 동시에 속하지 않아야 한다. 즉, SS에 속한 서로 다른 두 맛집 ii와 jj에 대해 Ri∩Rj=∅R_i \cap R_j = \emptyset이다.

조건을 만족하는 집합 SS 중에서 선호도의 합이 가장 큰 집합을 찾아, 그때의 선호도 합을 출력하라.

입력

첫 번째 줄에 두 정수 NN과 MM이 공백 하나를 사이에 두고 주어진다.

다음 N−1N-1개의 줄에는 도시 사이의 길을 나타내는 두 정수 aa와 bb가 공백 하나를 사이에 두고 주어진다.

다음 MM개의 줄에는 맛집 정보가 주어진다. ii번째 줄(1≤i≤M1 \le i \le M)에는 세 정수 cic_i, did_i, gig_i가 공백 하나를 사이에 두고 주어진다.

출력

첫 번째 줄에 조건을 만족하는 집합 SS 중 선호도 합의 최댓값을 출력한다.

제한

  • 주어지는 모든 수는 정수이다.
  • 1≤N≤1051 \le N \le 10^5
  • 1≤M≤1051 \le M \le 10^5
  • 모든 ii(1≤i≤M1 \le i \le M)에 대해 0≤di≤N−10 \le d_i \le N - 1, 1≤gi≤1091 \le g_i \le 10^9

예제1

  1. 예제 1

    입력
    8 5
    1 2
    2 3
    3 4
    4 5
    5 6
    4 7
    4 8
    3 2 40
    6 0 5
    8 0 5
    2 1 16
    5 1 32
    
    예상 출력
    53