Masha와 선인장
시간 제한4초메모리 제한512 MB
각 꼭짓점이 최대 하나의 사이클에 속하도록 추가 간선을 고르는 최대 무게를 구한다. 서브트리를 기준으로 DP를 세우고 루트로 가는 경로에 느린 갱신을 적용한다.
문제
Masha는 선인장을 좋아한다. 어렸을 때 그녀는 나무 한 그루를 심기로 했다. 이제 Masha는 자신의 나무를 멋진 선인장으로 만들고 싶어 한다.
트리는 사이클이 없는 연결 무방향 그래프이다. 선인장은 각 정점이 많아야 하나의 사이클에 속하는 연결 무방향 그래프이다.
Masha에게는 트리에 추가할 수 있는 간선이 몇 개 있다. 각 간선에 대해 어떤 두 정점을 연결하는지와 그 간선의 아름다움을 알고 있다. Masha는 이 간선들 중 일부를 그래프에 추가할 수 있으며, 그 결과 그래프가 선인장이어야 한다. 완성된 선인장의 아름다움은 추가한 모든 간선의 아름다움의 합이다.
Masha가 얻을 수 있는 선인장의 최대 아름다움을 구하시오.
입력
첫째 줄에는 정수 n과 m이 주어진다. n은 트리의 정점 수이고, m은 사용할 수 있는 추가 간선의 수이다. (3 ≤ n ≤ 2·10^5; 0 ≤ m ≤ 2·10^5)
Masha의 트리를 설명한다. 트리의 루트는 정점 1이다. 둘째 줄에는 n - 1개의 정수가 주어진다. p2, p3, ..., pn이며, pi는 정점 i의 부모, 즉 정점 i에서 트리의 루트로 가는 경로에서 첫 번째 정점이다. (1 ≤ pi < i)
다음 m개의 줄에는 세 개의 정수 ui, vi, ci가 주어진다. ui와 vi는 Masha가 트리에 추가할 수 있는 추가 간선이 연결하는 두 정점이고, ci는 그 간선의 아름다움이다. (1 ≤ ui, vi ≤ n; ui ≠ vi; 1 ≤ ci ≤ 10^4)
어떤 추가 간선도 트리의 간선과 일치하지 않음이 보장된다.
출력
Masha가 얻을 수 있는 선인장의 최대 아름다움을 정수 하나로 출력한다.