시간 제한메모리 제한제출정답맞힌 사람정답 비율
3 초 (추가 시간 없음) 1024 MB147432445.283%

문제

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

KOI나라는 구조가 특이해서, 도시를 정점으로 표현하고 길을 양방향 간선으로 표현하면 N개의 정점을 가진 트리가 된다. 트리는 사이클이 없는 연결 그래프이다.

KOI나라에는 총 M개의 맛집이 있으며, 각 맛집에는 1번부터 M번까지의 번호가 붙어 있다. 맛집이 아예 없는 도시가 있을 수도 있고, 맛집이 두 개 이상 있는 도시가 있을 수도 있음에 유의하라.

i (1 ≤ i ≤ M)번 맛집은 ci번 도시에 있으며, 배달 가능 거리는 di이고, 고객 선호도는 gi이다.

i번 맛집은 ci번 도시에서부터 di개 이하의 길을 거쳐 갈 수 있는 도시들에만 배달을 할 수 있다. 즉, i번 맛집이 배달할 수 있는 도시들의 집합을 Ri라고 하면, Ri = {j | d(ci, j) ≤ di}이다. 여기서 d(a, b)는 a번 도시와 b번 도시의 최단 경로의 길이(두 도시 사이를 이동하기 위해 거쳐야 하는 최소 길의 수)이다.

당신은 배달 앱의 운영자이다. 배달 앱은 맛집들을 추천하는데 서비스의 중복을 피하기 위해서 M개의 맛집 중 다음 조건을 만족하는 맛집들의 집합 S를 고르려고 한다.

  • 임의의 도시 p에 대해서, p는 S에 속하는 두 개 이상의 맛집의 배달 가능한 집합에 동시에 속하지 않는다. 즉, S에 속한 임의의 서로 다른 두 맛집 i와 j에 대해서, Ri ∩ Rj는 공집합이어야 한다.

위 조건을 만족하는 맛집들의 집합 S 중에서, S에 속한 맛집들의 선호도의 합이 최대인 집합을 찾아, 그 때 선호도의 합을 출력하는 프로그램을 작성하라.

입력

첫 번째 줄에 두 개의 정수 N과 M이 공백 하나를 사이로 두고 주어진다.

다음 N − 1개의 줄에는 KOI 나라의 길이 잇는 두 도시의 번호를 나타내는 정수 a와 b가 공백 하나를 사이로 두고 주어진다.

다음 M개의 줄에는 맛집에 대한 정보가 주어진다. 이 중 i (1 ≤ i ≤ M)번째 줄에는 세 개의 정수 ci, di, gi가 공백 하나를 사이로 두고 주어진다.

출력

첫 번째 줄에 문제의 조건을 만족하는 맛집의 집합 중 선호도의 합을 최대화하도록 집합을 골랐을 때의 선호도의 합을 출력한다.

제한

  • 주어지는 모든 수는 정수이다.
  • 1 ≤ N ≤ 105
  • 1 ≤ M ≤ 105
  • 모든 i (1 ≤ i ≤ M)에 대해: 0 ≤ di ≤ N − 1, 1 ≤ gi ≤ 109

서브태스크

번호배점제한
19

1 ≤ i ≤ N − 1 에 대해서, i번 정점과 i + 1번 정점이 간선으로 연결되어 있다.

211

N, M ≤ 20.

317

N, M ≤ 2 000.

410

N ≤ 2 000.

58

2 ≤ i ≤ N에 대해, ⌊i/2⌋번 정점과 i번 정점이 간선으로 연결되어 있다.

612

차수가 3 이상인 정점은 많아야 하나뿐이다.

733

추가 제약 조건이 없다.

예제 입력 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

예제 출력 1

53

채점 및 기타 정보

  • 예제는 채점하지 않는다.