바이오칩
시간 제한2초메모리 제한512 MB
값이 주어진 루트 트리에서 조상과 자손을 함께 고르지 않으면서 합이 가장 커지도록 정확히 M개 노드를 고합니다.
문제
과학자들이 스스로 여러 개의 새로운 바이오칩으로 분열하는 바이오칩을 발견했다. 분열이 일어나면 부모 바이오칩은 사라진다. 바이오칩마다 자기 메모리 크기가 있고, 이 크기는 부모의 메모리 크기와 무관하다. 분열로 생긴 바이오칩은 그대로 사용해서 분열을 멈추거나, 같은 방식으로 계속 분열한다.
과학자들은 분열 과정을 원소가 개인 트리로 정리했고, 트리의 구조와 각 바이오칩의 메모리 크기를 모두 알고 있다.
트리에서 바이오칩을 정확히 개 골라 메모리 크기의 합을 최대로 만드는 프로그램을 작성하시오. 어떤 바이오칩을 고르면 그 조상과 자손은 하나도 고를 수 없다.
입력
첫째 줄에 트리의 원소 개수 과 골라야 하는 바이오칩의 개수 이 주어진다 (, ).
다음 개의 줄에는 음이 아닌 정수가 두 개씩 주어진다. 첫 번째 수는 트리에서 부모의 번호이고, 두 번째 수는 그 바이오칩의 메모리 크기 이다 (). 바이오칩의 번호는 1부터 까지이고, 이 개의 줄 중 번째 줄이 번호가 인 바이오칩의 정보이다. 부모가 없는 바이오칩은 하나뿐이며, 그 바이오칩의 부모는 0으로 주어진다.
바이오칩을 개 고르는 방법은 항상 존재한다.
출력
고른 바이오칩 개의 메모리 크기 합의 최댓값을 한 줄에 출력한다.