페이지를 불러오는 중…
해결한 사람
0
명
정답률
0.00
%
시간 제한
2000
ms
메모리 제한
512
MB
명의 사원으로 구성되는 어느 회사의 조직도는 루트 트리(rooted tree)로 표현된다. 트리의 각 노드는 한 명의 사원을 의미하고, 간선은 직속 상사-부하의 관계를 나타낸다. 각 사원은 부터 까지 번호가 부여되어 있다. 사원 은 회사의 사장이며, 트리의 루트이다. 각 사원의 실력 또한 정수로 표현되는데, 실력은 음수일수도 있다. 아래 그림은 조직도의 한 예를 보여준다. 노드 안의 수는 사원 번호를 의미한다.

사원 중 일부를 팀장으로 선택하려 한다. 팀장으로 선발되면, 팀장은 자신을 포함하여 팀을 구성해야 하는데, 각 팀은 다음 조건을 만족해야 한다.
회사에서는 두 명의 팀장을 선택하여 두 개의 팀을 구성하되, 두 팀의 점수를 합산한 결과(즉, 두 팀의 팀원 전체의 실력의 합)가 최대가 되도록 하려고 한다. 두 팀 점수의 합으로 가능한 최댓값을 계산하는 프로그램을 작성하라. 위 조건을 만족하도록 두 팀을 구성할 수 있는 경우만 입력으로 주어진다.
| 번호 | 배점 | 제한 |
|---|---|---|
| 1 | 17 | 모든 사원의 실력은 양수이다. |
| 2 | 12 | 이고, 사원 을 제외한 각 사원 의 직속 상사 번호는 이다. |
| 3 | 20 | 사원 을 제외한 각 사원 의 직속 상사 번호는 이다. |
| 4 | 16 | . |
| 5 | 17 | . |
| 6 | 18 | 추가 제약 조건 없음 |
첫 번째 줄에 하나의 정수 이 주어진다.
다음 개의 줄에는 사원들에 대한 정보가 주어진다. 이 중 ()번째 줄에는 사원 의 실력과 직속 상사 번호를 나타내는 두 개의 정수가 공백 하나를 사이로 두고 주어진다.
사원 1은 직속 상사가 없으므로, 사원 의 직속 상사 번호의 자리에는 대신 이 들어온다.
두 팀 점수의 합으로 가능한 최댓값을 출력하라. 출력 값이 매우 클 수 있으므로 C, C++ 언어에서는 long long 형의 변수를, Java에서는 long 형의 변수를 사용해야 한다.
4
3 -1
-2 1
2 2
-1 1
5
로그인 상태를 확인하는 중입니다.