만드는 중입니다

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

아이들을 위하여

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

요약
도시별 모금액과 도시 사이 이동 비용이 주어졌을 때, 모든 구간의 비용을 치르고 마지막 도시에 도달하기 위해 출발지에 넣어야 할 최소 금액을 구합니다.
난이도

보통10점 중 7점

유형
그래프, 동적 계획법, 비트 연산
정답자
아직 제출이 없습니다

알림

이 문제는 대회 1분 뒤 모든 팀에 보낸 정정 공지로 대회에서 철회되었다.

철회 이유는 대회 24시간 전 시점에 출제팀이 해답을 하나만 가지고 있었기 때문이다. 우리는 두 명 이상의 출제자가 독립적으로 확인한 뒤에야 문제를 진행하는 것을 강하게 선호한다.

문제

전국 규모의 자선단체 Won't Someone Think of the Children이 유명 홍보대사를 동해안에서 서해안까지 잇는 홍보 투어에 보낸다. 여느 자선단체처럼 이 단체도 자금이 넉넉하지 않아서, 서해안 사무소에서 동해안의 마지막 기자회견장까지 홍보대사의 이동 경비를 신중하게 계획해야 한다.

이 단체의 지역 사무소들은 투어 중 홍보대사가 각 도시를 방문하는 데 쓸 비용을 모으려고 약정금과 기부금을 받아 왔다. 본부는 홍보대사가 중간 도시 중 어디를 방문하는지 약속하지 않았지만, 지역에서 모은 돈이 동서 횡단 여정의 비용에 보탬이 되기를 바란다. 지역 사무소의 도움이 없다면 본부는 홍보대사를 최종 목적지까지 보낼 여력이 있을지 확신하지 못한다.

여행 경비는 단계별로 치러진다. 홍보대사는 다음 도시까지의 교통비를 감당할 돈이 있을 때에만 한 도시에서 다른 도시로 이동할 수 있다. 도시에 도착하면 그 도시에 모인 돈을 모두 받아, 이후 구간의 경비에 쓴다. 홍보대사는 같은 도시를 한 번만 방문할 수 있다.

홍보대사를 초청한 도시 목록, 각 도시가 모은 금액, 도시 쌍 사이의 이동 경비가 주어질 때, 여행 중 어느 구간의 경비도 치르지 못하는 일 없이 끝까지 갈 수 있도록 여행 시작 시점에 본부가 제공해야 하는 금액의 최솟값을 구하라.

입력

입력은 하나 이상의 데이터 셋으로 이루어진다. 각 데이터 셋은 도시 수 NN을 나타내는 정수 한 개가 적힌 줄로 시작한다. 2≤N<242 \leq N < 24이다. NN이 0이면 입력이 끝난다.

도시는 0…N−10 \ldots N-1 범위의 번호로 구분한다. 도시 0은 본부이자 출발지이다. 도시 N−1N-1은 최종 목적지이다.

이어지는 N−2N-2개의 줄에는 각각 0…10 0000 \ldots 10\,000 범위의 정수가 하나씩 적혀 있으며, 이는 도시 1…N−21 \ldots N-2가 모은 금액이다. 도시 N−1N-1의 금액은 상관없고, 도시 0에서 제공해야 할 금액이 구하려는 값이다.

그 뒤의 각 줄에는 정수 ii, jj, cc가 하나씩 적혀 있다. ii와 jj는 서로 다른 도시로 0…N−10 \ldots N-1 범위이고, cc는 두 도시 사이의 이동 경비이며 0<c<10 0000 < c < 10\,000이다. 경비는 양방향이 같다. 이 줄은 최소 1개, 최대 N(N−1)/2N(N-1)/2개가 있다. 목록의 끝은 ii, jj, cc가 모두 음수인 줄로 표시된다.

출력

데이터 셋마다 한 줄을 출력하라.

도시 0에서 도시 N−1N-1에 도달할 수 있으면, 도시 N−1N-1에 확실히 도달하기 위해 도시 0에서 대상자에게 주어야 하는 금액의 최솟값을 출력하라.

도시 0에서 도시 N−1N-1에 도달할 수 없으면 −1-1을 출력하라.

예제1

  1. 예제 1

    입력
    4
    4
    12
    0 1 5
    0 2 10
    2 3 8
    2 1 6
    -1 -1 -1
    4
    4
    12
    0 1 5
    0 2 10
    2 3 8
    2 1 6
    0 3 6
    -1 -1 -1
    0
    
    예상 출력
    7
    6