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

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

Enjoyable Communication

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

요약
최대 50개 노드를 가진 방향 그래프에서 길이와 사전순 규칙에 따라 두 노드 사이의 k번째로 짧은 단순 경로를 찾는 문제입니다.
난이도

보통10점 중 6점

유형
최단 경로, 그래프, 백트래킹
정답자
아직 제출이 없습니다

문제

아이작은 매일 같은 최단 경로로 회사에 출근하는 일에 지쳤다. 시간은 아낄 수 있지만 늘 똑같은 풍경만 봐야 해서, 이 지루한 출근을 더는 견딜 수 없게 되었다.

어느 날 그는 매일 조금씩 다른 경로로 다니기로 했다. 그의 계획은 이렇다. 첫째 날에는 최단 경로를 이용하고, 둘째 날에는 두 번째로 짧은 경로(첫째 날에 이용한 경로를 제외한 최단 경로)를 이용한다. 일반적으로 kk번째 날에는 kk번째로 짧은 경로를 이용한다. 물론 한 경로에서 같은 곳을 두 번 방문해서는 안 된다.

아이작을 도와, kk번째 날에 그가 이용할 경로를 찾는 프로그램을 작성하라. 이 문제는 그래프 이론으로 간단히 모델링할 수 있다. 즉, 주어진 방향 그래프에서 kk번째로 짧은 경로를 찾으면 된다.

입력

입력은 여러 개의 데이터셋으로 이루어져 있으며, 각 데이터셋의 형식은 다음과 같다.

n m k a b
x1 y1 d1
x2 y2 d2
...
xm ym dm

데이터셋의 모든 값은 음이 아닌 정수이며, 한 줄에 있는 값들은 공백 하나로 구분된다.

nn은 그래프의 정점 개수로 2≤n≤502 \le n \le 50이다. mm은 방향 간선의 개수이다. aa는 시작 정점, bb는 도착 정점이며 둘 다 11 이상 nn 이하이고 a≠ba \ne b이다. aa에서 bb로 가는 kk번째 최단 경로를 찾아야 하며, 1≤k≤2001 \le k \le 200이다.

ii번째 간선(1≤i≤m1 \le i \le m)은 정점 xix_i에서 정점 yiy_i로 향하고 길이는 did_i이다. 여기서 xix_i와 yiy_i는 11 이상 nn 이하이고, 1≤di≤100001 \le d_i \le 10000이다. 이 간선으로 xix_i에서 yiy_i로 직접 이동할 수 있지만, 반대 방향 간선이 따로 주어지지 않는 한 yiy_i에서 xix_i로는 이동할 수 없다. 임의의 정점 순서쌍에 대해 간선은 많아야 하나이며, 자기 자신으로 향하는 간선은 없다(xi≠yix_i \ne y_i). 따라서 0≤m≤n(n−1)0 \le m \le n(n-1)이 성립한다.

그래프는 현실적인 도로망과 전혀 다를 수 있다. m=0m = 0인 경우와 m=n(n−1)m = n(n-1)인 경우가 모두 데이터에 포함된다.

마지막 데이터셋 다음에는 공백으로 구분된 다섯 개의 00이 있는 줄이 온다.

출력

각 데이터셋에 대해 아래 규칙에 따라 정확히 한 줄을 출력한다. 줄 끝 공백 같은 불필요한 문자를 포함해서는 안 된다.

aa에서 bb로 가는 서로 다른 경로의 개수가 kk보다 적으면 문자열 None을 출력한다(첫 글자 N은 대문자, 나머지는 소문자).

그렇지 않으면 kk번째 최단 경로에서 방문하는 정점 번호를 방문 순서대로 하이픈(-)으로 구분하여 출력한다. 첫 번째 번호는 반드시 aa, 마지막 번호는 반드시 bb여야 한다.

이 문제에서 더 짧다(따라서 가장 짧다)는 특별한 의미를 가진다. 경로 PP가 경로 QQ보다 짧다는 것은 다음 중 하나가 성립하는 경우이며, 그 경우에만 성립한다.

  • PP의 길이가 QQ의 길이보다 작다. 경로의 길이는 그 경로에 속한 간선 길이의 합이다.
  • PP와 QQ의 길이가 같고, PP의 정점 번호 수열이 사전식(lexicographic) 순서로 QQ의 수열보다 앞선다. PP의 수열을 p1,p2,…,psp_1, p_2, \ldots, p_s, QQ의 수열을 q1,q2,…,qtq_1, q_2, \ldots, q_t라 하면(p1=q1=ap_1 = q_1 = a, ps=qt=bp_s = q_t = b), 어떤 rr(1≤r≤s1 \le r \le s이고 r≤tr \le t)에 대해 p1=q1,…,pr−1=qr−1p_1 = q_1, \ldots, p_{r-1} = q_{r-1}이고 pr<qrp_r < q_r일 때 PP가 QQ보다 앞선다.

같은 정점을 두 번 이상 방문하는 경로는 허용되지 않는다.

예제2

  1. 예제 1

    입력
    5 20 10 1 5
    1 2 1
    1 3 2
    1 4 1
    1 5 3
    2 1 1
    2 3 1
    2 4 2
    2 5 2
    3 1 1
    3 2 2
    3 4 1
    3 5 1
    4 1 1
    4 2 1
    4 3 1
    4 5 2
    5 1 1
    5 2 1
    5 3 1
    5 4 1
    4 6 1 1 4
    2 4 2
    1 3 2
    1 2 1
    1 4 3
    2 3 1
    3 4 1
    3 3 5 1 3
    1 2 1
    2 3 1
    1 3 1
    0 0 0 0 0
    
    예상 출력
    1-2-4-3-5
    1-2-3-4
    None
    
  2. 예제 2

    입력
    2 1 1 1 2
    1 2 5
    0 0 0 0 0
    
    예상 출력
    1-2