철도 건설

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

요약
가중 그래프에서 마을 0에서 마을 1로 가는 단순 경로를 골라, 가장 비싼 두 구간을 제외한 나머지 비용을 군이 부담하도록 경로를 정하고 그 경로와 비용을 출력한다.
난이도

보통10점 중 7점

유형
그래프, 최단 경로, 완전 탐색
정답자
아직 제출이 없습니다

문제

당신의 카운티가 가장 큰 두 도시인 Acmar와 Ibmar를 잇는 철도 시스템을 놓기 위한 주(州) 보조금을 받게 되었다. 이 철도 시스템은 여러 개의 구간으로 나뉘어 건설된다. 각 구간은 서로 다른 두 도시를 잇고, 첫 번째 구간은 Acmar에서 시작하며, 마지막 구간은 Ibmar에서 끝난다.

보조금 규정은 다음과 같다. 주는 철도 시스템에서 가장 비싼 두 구간의 비용을 내고, 카운티는 나머지 구간의 비용을 모두 낸다.

  • 철도 시스템이 구간을 두 개만 가지면, 주는 그 둘 중 더 비싼 구간 하나만 낸다.
  • 철도 시스템이 구간을 하나만 가지면, 주는 아무것도 내지 않는다.

주는 단순 경로, 즉 어떤 도시도 두 번 이상 방문하지 않는 경로만 고려한다.

여러 도시 쌍을 잇는 비용의 견적이 주어질 때, 카운티가 내는 비용이 가능한 한 적어지도록 철도 시스템을 어떻게 건설할지 정하여라.

입력

입력은 여러 개의 테스트 케이스로 이루어진다. 각 케이스는 구간 비용 견적의 개수를 나타내는 하나의 양의 정수 n≤50n \le 50이 있는 줄로 시작한다. (모든 도시 쌍에 대해 견적이 있는 것은 아니다.) 그 뒤로 nn개의 줄에 각각 하나의 견적이 세 정수 s e c로 주어지며, 이는 도시 ss와 ee를 잇는 구간을 건설하는 데 드는 예상 비용이 cc임을 뜻한다.

Acmar는 항상 도시 00이고 Ibmar는 항상 도시 11이며, 나머지 도시는 연속된 정수로 번호가 매겨진다. 비용은 대칭적이며(ss에서 ee로 잇는 비용과 ee에서 ss로 잇는 비용이 같다), 항상 양수이고 10001000 이하이다. 이 구간들을 이용해 Acmar에서 Ibmar까지 철도로 이동하는 것은 항상 가능하다. n=0n = 0인 줄이 입력의 끝을 나타낸다.

출력

각 테스트 케이스에 대해, 다음 형식의 한 줄을 출력한다.

c1 c2 ... cm cost

여기서 c1,c2,…,cmc_1, c_2, \ldots, c_m은 가장 저렴한 경로를 이루는 도시들을 순서대로 나열한 것이고, cost는 카운티가 내는 비용이다. c1c_1은 항상 00(Acmar), cmc_m은 항상 11(Ibmar)이며, 연속한 두 도시 cic_i와 ci+1c_{i+1}은 경로 위에서 하나의 구간으로 연결되어 있다.

카운티가 내는 비용이 같은 경로가 여럿이면 구간 수가 가장 적은 경로를 출력하고, 그래도 같으면 사전순으로 가장 앞선 경로를 출력한다.

예제4

  1. 예제 1

    입력
    7
    0 2 10
    0 3 6
    2 4 5
    3 4 3
    3 5 4
    4 1 7
    5 1 8
    0
    
    예상 출력
    0 3 4 1 3
    
  2. 예제 2

    입력
    1
    0 1 42
    0
    
    예상 출력
    0 1 42
    
  3. 예제 3

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

    입력
    3
    0 1 100
    0 2 3
    2 1 4
    0
    
    예상 출력
    0 2 1 3