아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

올림픽 대로

면접 대비

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

요약
사이트 수가 50 이하인 가중 무향 그래프에서 S에서 F까지 최단 경로를 찾고, 여러 개면 사이트 번호 순서가 사전순으로 가장 작은 경로를 출력한다.
난이도

보통10점 중 5점

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

문제

2004년 아테네 올림픽에는 경기장, 선수촌, 프레스 센터, 사무실 등 여러 올림픽 시설이 있었다. 선수, 관계자, 기자들이 시설 사이를 빠르게 이동할 수 있도록 아테네는 올림픽 버스만 다닐 수 있는 '올림픽 대로(Olympic Avenue)'를 만들었다. 각 올림픽 대로는 정확히 두 시설을 직접 연결한다. 모든 시설이 대로로 직접 연결되어 있는 것은 아니며, 하나의 대로는 정확히 두 시설을 잇는다. 한 버스 기사가 오직 올림픽 대로만 이용해 어떤 시설에서 다른 시설로 이동하려 한다. 올림픽 시설과 대로에 대한 정보가 주어질 때, 올림픽 대로만 이용해 두 시설 사이를 이동하는 가장 짧은 경로를 구하여라. 대로는 양방향으로 통행할 수 있다.

입력

첫째 줄에 올림픽 시설의 수 NN이 주어진다 (5≤N≤505 \le N \le 50). 둘째 줄에는 두 정수 SS와 FF가 주어지며, 각각 경로의 시작 시설과 도착 시설의 번호이다. 셋째 줄에는 올림픽 대로의 수 LL이 주어진다. 이어지는 LL개의 줄에는 각 대로의 정보가 주어진다. 각 줄에는 세 정수 II, JJ, DD가 주어지는데, II와 JJ는 대로가 연결하는 두 시설의 번호이고 DD는 두 시설 사이의 거리이다(DD는 양의 정수). 시설의 번호는 1부터 NN까지이다. 입력의 형식은 다음과 같다.

N
S F
L
I1 J1 D1
I2 J2 D2
...
IL JL DL

출력

첫째 줄에 SS에서 FF까지 가는 가장 짧은 경로의 길이(거리의 합)를 출력한다. 둘째 줄에는 그 경로에서 방문하는 시설들의 번호를 순서대로 출력하며, 첫 번째 수는 SS, 마지막 수는 FF이다. 가장 짧은 경로가 여러 개인 경우, 시설 번호의 수열이 사전순으로 가장 앞서는 경로를 출력한다(두 수열을 앞에서부터 원소 단위로 비교했을 때, 더 작은 원소를 갖는 쪽이 사전순으로 앞선다). SS와 FF가 같은 시설인 경우, 경로의 길이는 0이고 둘째 줄에는 SS만 출력한다.

예제2

  1. 예제 1

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

    입력
    5
    1 5
    6
    1 2 5
    1 3 5
    1 4 5
    2 5 5
    3 5 5
    4 5 5
    
    예상 출력
    10
    1 2 5