스트랩

면접 대비

시간 제한1초메모리 제한512 MB

요약
각 스트랩은 부모 스트랩의 포트 하나를 차지하며 휴대폰에는 스트랩 하나만 직접 연결될 때, 연결된 스트랩의 행복 합의 최댓값을 구한다.
난이도

보통10점 중 6점

유형
동적 계획법, 트리, DFS, 정렬
정답자
아직 제출이 없습니다

문제

JOI 군은 휴대전화에 달기 위한 스트랩을 N개 가지고 있다. 스트랩에는 1부터 N까지 번호가 붙어 있다. JOI 군은 이 스트랩 중 몇 개를 휴대전화에 달려고 한다.

JOI 군이 가진 스트랩은 조금 특이해서, 몇몇 스트랩에는 다른 스트랩을 달기 위한 단자가 여러 개 붙어 있다. 각 스트랩은 휴대전화에 직접 달거나, 다른 스트랩의 단자에 달 수 있다. 휴대전화에 직접 달 수 있는 스트랩은 1개까지이다.

또한 각 스트랩에는 달았을 때 얻는 즐거움이 정해져 있다. 이 즐거움은 정수 하나로 나타난다. JOI 군이 싫어하는 스트랩도 있어서, 그 경우 즐거움은 음수이다.

JOI 군은 휴대전화에 연결된 스트랩의 즐거움 총합을 최대화하려고 한다. 모든 단자에 스트랩을 달 필요는 없고, 스트랩을 하나도 달지 않아도 된다.

JOI 군이 가진 N개 스트랩의 정보가 주어진다. 스트랩을 적절히 달았을 때, 휴대전화에 연결된 스트랩의 즐거움 총합의 최댓값을 구하는 프로그램을 작성하시오.

입력

표준 입력에서 다음 데이터를 읽는다.

  • 첫째 줄에는 정수 N이 쓰여 있다. N은 스트랩의 개수를 나타낸다.
  • 이어지는 N개 줄 중 i번째 줄 (1 ≤ i ≤ N)에는 정수 Ai, Bi가 공백을 구분으로 쓰여 있다. 이는 스트랩 i에는 단자가 Ai개 있고, 그 스트랩을 달았을 때의 즐거움이 Bi라는 것을 나타낸다.

출력

표준 출력에, 휴대전화에 연결된 스트랩의 즐거움 총합의 최댓값을 나타내는 정수를 1줄로 출력하시오.

제한

  • 1 ≤ N ≤ 2 000.
  • 0 ≤ Ai ≤ N (1 ≤ i ≤ N).
  • −1 000 000 ≤ Bi ≤ 1 000 000 (1 ≤ i ≤ N).

예제3

  1. 예제 1

    입력
    5
    0 4
    2 -2
    1 -1
    0 1
    0 3
    
    예상 출력
    5
    
  2. 예제 2

    입력
    6
    2 -3
    3 -1
    0 -4
    0 -2
    1 -3
    4 -1
    
    예상 출력
    0
    
  3. 예제 3

    입력
    15
    1 -4034
    1 3406
    0 6062
    4 -6824
    0 9798
    0 4500
    0 -1915
    1 2137
    0 9786
    0 7330
    0 -9365
    2 2730
    0 -5797
    0 6129
    0 8925
    
    예상 출력
    43417