퀠링 블레이드

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

요약
무기 선행 조건이 트리를 이루고 각 무기에 비용과 이익이 있을 때, 루트를 최소 시간에 얻으면서 시간에 따른 보유 이익의 합을 최대로 하는 구매 순서를 구한다.
난이도

어려움10점 중 8점

유형
그리디, DFS, 트리, 정렬
정답자
아직 제출이 없습니다

문제

한 영웅이 게임을 하고 있으며, 이 게임에서 가장 강한 무기는 퀠링 블레이드이다. 모든 종류의 무기는 효용치 BB와 비용 CC를 가진다. 효용치는 서로 더해진다. 예를 들어 효용치가 33과 55인 무기 두 개를 보유하면 현재 효용치는 3+5=83 + 5 = 8이다. 같은 종류의 무기를 여러 개 보유하면 그 효용치도 각각 더해진다.

어떤 무기를 사려면 먼저 다른 무기가 필요할 수 있다. 예를 들어 어떤 무기가 데몬 엣지 두 개를 필요로 한다면, 그 무기를 사기 전에 데몬 엣지 두 개를 이미 보유하고 있어야 한다. 같은 무기를 한 개 더 사려면 데몬 엣지 두 개가 또 필요하다. 필요 조건으로 쓰인 무기는 구매 후에도 사라지지 않으며, 한 무기가 같은 종류의 무기를 여러 개 필요로 할 수도 있다. 각 무기 종류는 최대 하나의 다른 무기 종류에만 필요 조건으로 쓰이므로, 필요 조건 관계는 퀠링 블레이드를 뿌리로 하는 트리를 이룬다.

영웅은 매초 정확히 11코인을 벌어 무기를 사는 데 쓴다. 비용이 CC인 무기는 쓰지 않은 코인이 CC개 모이면 살 수 있다. 필요한 모든 하위 무기의 값을 치러야 하므로, 퀠링 블레이드를 얻기까지의 최소 시간은 사야 하는 모든 무기의 비용 합과 같고, 유효한 구매 순서라면 어떤 순서를 따르더라도 이 최소 시간을 달성할 수 있다.

영웅은 완벽주의자다. 이 최소 시간 안에 퀠링 블레이드에 도달하는 모든 구매 순서 중에서 효용(utility)을 최대로 만들고자 한다. 효용은 게임 시작부터 퀠링 블레이드를 얻는 그 초 직전까지(그 초는 포함하지 않는다) 매초마다 현재 보유한 총 효용치를 모두 더한 값이다. 달리 말하면, 구매가 시각 tt에 완료되는 무기는 퀠링 블레이드를 얻기 전까지 남은 S−tS - t초 동안 매초 자신의 효용치를 기여한다. 여기서 SS는 전체 구매 시간이다.

가능한 최대 효용을 구하라.

입력

첫 줄에 테스트 케이스의 수 TT가 주어진다. 대부분의 테스트 케이스는 작다.

각 테스트 케이스의 첫 줄에는 무기 종류의 수 NN이 주어진다 (1≤N≤1000)(1 \le N \le 1000).

이어서 무기들을 하나씩 설명한다. 무기 ii에 대해(무기는 11번부터 NN번까지 번호가 매겨진다):

  • 효용치 BB와 비용 CC를 나타내는 두 정수가 한 줄에 주어진다 (1≤B,C≤231−1)(1 \le B, C \le 2^{31}-1).
  • 이 무기가 필요로 하는 서로 다른 무기 종류의 수 PP가 한 줄에 주어진다.
  • 이어지는 PP개의 줄에는 각각 두 정수 II와 AA가 주어지며, 이 무기가 종류 II인 무기를 AA개 필요로 함을 뜻한다.

11번 무기가 퀠링 블레이드이다. 퀠링 블레이드 하나를 얻기 위해 사야 하는 무기의 총 개수는 10610^6개 미만이며, 각 무기 종류는 최대 하나의 다른 무기 종류에만 필요 조건으로 쓰인다.

출력

각 테스트 케이스마다 Case #x: y 형식으로 한 줄을 출력한다. 여기서 xx는 11부터 시작하는 테스트 케이스 번호이고 yy는 최대 효용이다. 답은 항상 부호 있는 64비트 정수 범위에 들어간다.

예제4

  1. 예제 1

    입력
    2
    3
    1 1
    1
    2 2
    2 1
    1
    3 1
    1 1
    0
    3
    1 1
    1
    2 2
    1 1
    1
    3 1
    2 1
    0
    
    예상 출력
    Case #1: 14
    Case #2: 17
    
  2. 예제 2

    입력
    1
    1
    5 3
    0
    
    예상 출력
    Case #1: 0
    
  3. 예제 3

    입력
    1
    4
    1 2
    1
    2 1
    4 1
    1
    3 1
    2 3
    1
    4 1
    6 1
    0
    
    예상 출력
    Case #1: 50
    
  4. 예제 4

    입력
    1
    2
    2 2
    1
    2 3
    5 1
    0
    
    예상 출력
    Case #1: 45