만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

가장 빠른 스피드런

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

요약
각 레벨을 깨면 같은 번호의 아이템을 얻습니다. 아이템별 클리어 시간과 레벨별 숏컷이 주어질 때 모든 레벨을 깨는 최소 총 시간을 구합니다.
난이도

보통10점 중 7점

유형
그래프, 최소 신장 트리
정답자
아직 제출이 없습니다

문제

고전 비디오 게임 "Prince of Python"에는 1번부터 nn번까지 번호가 붙은 nn개의 레벨이 있다. 모든 레벨을 가능한 한 빠르게 깨는 스피드런을 하려고 한다. 레벨은 원하는 순서로 깨도 된다.

각 레벨에는 n+1n + 1개의 마법 아이템 중 하나를 가지고 들어간다. 처음에는 인벤토리에 아이템 0만 있다. 레벨을 깨면 그 레벨과 번호가 같은 아이템을 얻어 계속 보유한다. 예를 들어 5번 레벨을 깨면 5개의 손가락을 가진 건틀릿을 얻고, 이후에는 처음 가진 0 피해의 검 대신 장착할 수 있다.

레벨을 깨는 데 걸리는 시간은 들어갈 때 가지고 있던 아이템에 따라 다르다. 번호가 높은 아이템일수록 강하므로, 규칙대로 플레이하면 번호가 높은 아이템이 번호가 낮은 아이템보다 빠르거나 같다.

하지만 각 레벨에는 개발자가 남겨 둔 지름길이 있다. 지름길은 특정 아이템을 비정상적인 방식으로 사용하면 열린다. 지름길을 쓰면 다른 어떤 아이템을 쓸 때보다 같거나 더 빠르게 레벨을 깰 수 있다.

모든 레벨을 깨는 데 걸리는 최소 시간은 얼마인가?

입력

입력은 다음과 같다.

  • 첫 줄에 정수 nn (1≤n≤25001 \le n \le 2500)이 주어진다. 레벨의 개수이다.
  • 이후 nn개의 줄이 각 레벨을 설명한다.
    ii번째 줄은 두 정수 xix_i와 sis_i (0≤xi≤n0 \le x_i \le n, 1≤si≤1091 \le s_i \le 10^9)로 시작한다. xix_i는 ii번 레벨의 지름길 아이템이고, sis_i는 지름길을 썼을 때 ii번 레벨을 깨는 시간이다. 줄의 나머지에는 n+1n + 1개의 정수 ai,0,…,ai,na_{i,0}, \ldots, a_{i,n} (109≥ai,0≥ai,1≥…≥ai,n≥si10^9 \ge a_{i,0} \ge a_{i,1} \ge \ldots \ge a_{i,n} \ge s_i)이 있다. ai,ja_{i,j}는 규칙대로 아이템 jj를 사용해 ii번 레벨을 깨는 시간이다.

출력

모든 레벨을 순서와 상관없이 깨는 데 필요한 최소 시간을 출력한다.

예제2

  1. 예제 1

    입력
    3
    1 1 40 30 20 10
    3 1 95 95 95 10
    2 1 95 50 30 20
    
    예상 출력
    91
    
  2. 예제 2

    입력
    4
    4 4 5 5 5 5 5
    4 4 5 5 5 5 5
    4 4 5 5 5 5 5
    4 4 5 5 5 5 5
    
    예상 출력
    17