RiseOJ는 solved.ac와 제휴 관계가 없습니다. 티어 아이콘 © solved.ac. solved.ac
포럼
KOI00073

두 개의 팀

Platinum III 플래티넘 III
난이도
2s
시간 제한
512MB
메모리 제한
1
맞았습니다!!
1
제출 수
100.0%
정답률
레이팅

의견: 0

설명

\(N\)명의 사원으로 구성되는 어느 회사의 조직도는 루트 트리(rooted tree)로 표현된다. 트리의 각 노드는 한 명의 사원을 의미하고, 간선은 직속 상사-부하의 관계를 나타낸다. 각 사원은 \(1\)부터 \(N\)까지 번호가 부여되어 있다. 사원 \(1\)은 회사의 사장이며, 트리의 루트이다. 각 사원의 실력 또한 정수로 표현되는데, 실력은 음수일수도 있다. 아래 그림은 조직도의 한 예를 보여준다. 노드 안의 수는 사원 번호를 의미한다.

사원 중 일부를 팀장으로 선택하려 한다. 팀장으로 선발되면, 팀장은 자신을 포함하여 팀을 구성해야 하는데, 각 팀은 다음 조건을 만족해야 한다.

  1. 팀원은 팀장의 부하 직원이어야 한다. (단, 직속 부하일 필요는 없다.) 예를 들어, 사원 \(3\)이 팀장이라면, 사원 \(8\)이나 \(11\)은 팀원이 될 수 있지만, 사원 \(1\)이나 \(9\)는 팀원이 될 수 없다.
  2. 어떤 사원이 팀원으로 포함되면, 그 사원의 직속 상사도 반드시 같은 팀의 팀원으로 포함되어야 한다 (단, 팀장 제외). 예를 들어, 사원 3이 팀장인 경우, 팀 구성이 \(\{3, 6, 11\}\)인 경우는 가능하나, \(\{3, 8, 11\}\)은 사원 \(11\)의 상사인 사원 \(6\)이 포함되지 않아 불가능하다.
  3. 팀의 점수(팀장을 포함한 팀원 전체의 실력의 합으로 정의)가 최대가 되도록 팀원을 구성해야 한다. (팀의 점수가 최대가 되도록 하는 팀 구성이 유일하지 않으면, 그 중 아무거나 골라도 된다.) 예들 들어, 모든 사원의 실력이 모두 양수라고 가정했을 때, 사원 \(3\)을 팀장으로 선발하면, 팀 구성은 반드시 \(\{3, 6, 7, 8, 11, 12\}\)가 되어야 되고, 이 중 한명이라도 팀원에서 빠지는 경우는 허용되지 않는다.
  4. 팀원은 다른 팀의 팀원(팀장 포함)이 될 수 없다. 따라서 어떤 사원 A가 팀장일 때, 부하직원 B가 조건 \(3\)에 의해 팀장 A의 팀원이 되어야 한다면, 사원 A와 B를 모두 팀장으로 선발하는 것은 불가능한다.

회사에서는 두 명의 팀장을 선택하여 두 개의 팀을 구성하되, 두 팀의 점수를 합산한 결과(즉, 두 팀의 팀원 전체의 실력의 합)가 최대가 되도록 하려고 한다. 두 팀 점수의 합으로 가능한 최댓값을 계산하는 프로그램을 작성하라. 위 조건을 만족하도록 두 팀을 구성할 수 있는 경우만 입력으로 주어진다.

제약
  • \(2 \le N \le 200\,000\)
  • 사원의 실력은 \(-1\,000\,000\,000\) 이상, \(1\,000\,000\,000\) 이하의 정수이다.
  • 사원 \(1\)을 제외한 각 사원 \(i\)의 직속 상사 번호는 \(i - 1\) 이하이다.
  • 지문에 제시된 조건을 만족하도록 두 팀을 구성할 수 있다.
입력 형식

첫 번째 줄에 하나의 정수 \(N\)이 주어진다.

다음 \(N\)개의 줄에는 사원들에 대한 정보가 주어진다. 이 중 \(i\) (\(1 \le i \le N\))번째 줄에는 사원 \(i\)의 실력과 직속 상사 번호를 나타내는 두 개의 정수가 공백 하나를 사이로 두고 주어진다.

사원 1은 직속 상사가 없으므로, 사원 \(1\)의 직속 상사 번호의 자리에는 대신 \(-1\)이 들어온다.

출력 형식

두 팀 점수의 합으로 가능한 최댓값을 출력하라. 출력 값이 매우 클 수 있으므로 C, C++ 언어에서는 long long 형의 변수를, Java에서는 long 형의 변수를 사용해야 한다.

서브태스크
서브태스크점수설명

1

17점

모든 사원의 실력은 양수이다.

2

12점

\(N \le 5\,000\) 이고, 사원 \(1\)을 제외한 각 사원 \(i\)의 직속 상사 번호는 \(i - 1\)이다.

3

20점

사원 \(1\)을 제외한 각 사원 \(i\)의 직속 상사 번호는 \(i - 1\)이다.

4

16점

\(N \le 400\).

5

17점

\(N \le 5\,000\).

6

18점

추가 제약 조건 없음.

예제 1
입력
4
3 -1
-2 1
2 2
-1 1
출력
5
문제 정보

riseoj 작성

출처 올림피아드 > 한국정보올림피아드 > KOI 2021 > 1차 대회 > 중등부 2번

평가 및 의견

두 개의 팀

개요
출제자 난이도 Platinum III 플래티넘 III 의견 0 / 50 공개 집계 (커뮤니티 난이도, 주요 주제, 품질)는 의견이 충분히 모이면 공개됩니다.

Log in to rate problems.

개별 의견

아직 의견이 없습니다. 자격이 된다면 위 양식에서 가장 먼저 평가해 보세요.

풀이 제출

두 개의 팀

게스트로 둘러보고 있습니다. 로그인하면 풀이를 제출하고 진행 상황을 확인할 수 있습니다. 로그인하고 제출하기
공개
C++20 Tab 들여쓰기 · Ctrl+/ 주석 토글 · Enter 자동 들여쓰기
1 1 1 0 공백: 4 · UTF-8