프로그래밍 팀
시간 제한3초메모리 제한512 MB
추천한 직원이 팀에 있어야 한다는 조건 아래 트리에서 정확히 k명을 골라 생산성 합을 급여 합으로 나눈 값을 최대로 만들고, 소수 셋째 자리까지 출력한다.
문제
UpCoder는 새 웹사이트를 만들 팀을 꾸리려 한다. 후보는 명이고 사원 번호는 1번부터 번까지다. CEO의 사원 번호는 0번이다. 각 후보는 자기보다 번호가 작은 사원의 추천을 받았다. 후보 한 명은 사원 번호 외에 연봉 , 기대 생산성 , 자신을 추천한 사원의 번호 로 나타낸다.
후보 명 중에서 정확히 명을 팀에 넣어야 한다. 팀의 총 가치는 팀원 생산성의 합을 팀원 연봉의 합으로 나눈 값이다. 어떤 후보를 팀에 넣으려면 그 후보를 추천한 사원도 팀에 있어야 한다. 추천한 사원이 CEO이면 이 조건은 이미 만족한다. 그래서 팀원 중 적어도 한 명은 CEO가 추천한 후보다. CEO는 경영을 맡으므로 뽑는 명에는 들어가지 않는다.
이 조건을 지키면서 만들 수 있는 팀의 최대 총 가치를 구하라.
입력
첫째 줄에 정수 와 이 공백으로 구분되어 주어진다 (). 는 뽑아야 하는 팀원 수, 은 후보 수다.
다음 개 줄에는 사원 한 명의 정보가 사원 1번부터 사원 번까지 순서대로 주어진다. 각 줄에는 정수 , , 이 공백으로 구분되어 주어진다. 는 연봉 (), 는 생산성 (), 은 이 후보를 추천한 사원의 번호다 (, 는 이 후보의 사원 번호).
출력
팀의 최대 총 가치를 소수점 아래 셋째 자리까지 한 줄에 출력한다. 정확한 값을 소수점 아래 넷째 자리에서 반올림하되, 넷째 자리 아래가 정확히 절반이면 올린다.