만드는 중입니다

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

돌 장인

면접 대비

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

요약
각 도구는 지원 도구가 완성되기 전에는 day1일, 완성된 후에는 day2일 걸린다. 모든 도구를 완성하는 최소 일수를 구한다.
난이도

보통10점 중 6점

유형
그래프, 그리디, 구현, 정렬
정답자
아직 제출이 없습니다

문제

당신은 석기 시대의 이름난 장인이었고, 자연석을 깎아 온갖 도구를 만드는 데 평생을 바쳤다. 그 작품은 2006년의 박물관에도 정중히 전시되어 있다. 하지만 박물관을 찾는 사람은 대부분 그 앞에 오래 머물지 않는다. 하늘에서 그 모습을 내려다보다가, 당신은 미친 듯이 일하던 그 시절을 떠올렸다.

가장 바빴던 어느 날, 당신은 도구 주문을 여러 건 받았다. 주문마다 서로 다른 도구 하나를 요청했다. 맨돌만 가지고 주문 하나를 채우려면 며칠이 걸리기도 했다. 그러나 이미 완성해 둔 도구가 있으면 새 도구를 더 빨리 깎을 수 있었다. 주문 목록의 도구마다 그 도구를 깎는 데 도움이 되는 도구가 정확히 하나씩 정해져 있다.

도구 하나를 깎는 데 걸리는 날수는 두 가지다. 보조 도구 없이 맨돌부터 깎으면 day1day_1일이 걸리고, 깎기 시작하는 시점에 보조 도구가 이미 완성되어 있으면 day2day_2일만 걸린다. 보조 도구가 자기 자신으로 지정된 도구도 있는데, 그 도구는 자기 자신의 도움을 받을 수 없다.

도구는 한 번에 하나씩만 깎으므로, 전체 기간은 도구별 날수의 합이다. 모든 주문을 채우는 데 걸리는 최소 날수를 구하라.

입력

입력은 여러 개의 테스트 케이스로 이루어진다. 각 테스트 케이스의 첫 줄에는 주문된 도구의 개수 NN이 주어진다.

이어지는 NN개의 줄에는 주문 하나가 네 개의 값으로 주어지며, 값 사이는 한 개 이상의 공백으로 구분된다. 순서는 namename, day1day_1, supsup, day2day_2이다. namename은 해당 주문의 도구 이름이고, day1day_1은 보조 도구 없이 그 도구를 만드는 데 필요한 날수이며, supsup은 그 도구를 깎는 데 도움이 되는 도구의 이름이고, day2day_2는 supsup을 먼저 완성한 뒤 그 도구를 만드는 데 필요한 날수다.

입력은 N=0N = 0인 줄로 끝난다. 이 줄은 처리하지 않는다.

  • N≤1000N \le 1000
  • namename은 공백이 없는 32자 이하의 문자열이고, 같은 테스트 케이스 안에서 서로 다르다
  • supsup은 같은 테스트 케이스에 주어진 이름 중 하나이며, namename 자신일 수도 있다
  • 0<day2<day1<200000 < day_2 < day_1 < 20000

출력

각 테스트 케이스마다 NN개의 주문을 모두 채우는 데 필요한 최소 날수를 한 줄에 출력한다.

예제3

  1. 예제 1

    입력
    3
    gu 20 pa 10
    ci 20 gu 10
    pa 20 ci 10
    2
    tool 20 tool 10
    product 1000 tool 10
    8
    fishhook 21 disk 3
    mill 14 axe 7
    boomerang 56 sundial 28
    flint 35 fishhook 5
    axe 35 flint 14
    disk 42 disk 2
    sundial 14 disk 7
    hammer 28 mill 7
    0
    
    예상 출력
    40
    30
    113
    
  2. 예제 2

    입력
    1
    chisel 19999 chisel 1
    0
    
    예상 출력
    19999
    
  3. 예제 3

    입력
    2
    spear 100 knife 1
    knife 100 spear 99
    0
    
    예상 출력
    101