K번째로 짧은 경로 찾기
시간 제한2초메모리 제한256 MB
가중치가 있는 방향 그래프에서 도시 1부터 각 도시까지의 k번째 최단 경로 길이를 구하고 존재하지 않으면 -1을 출력합니다.
문제
여행자는 여러 도시를 지나 여행하려고 한다. 그는 항상 가장 짧은 경로만 고르는 대신, 너무 오래 걸리지 않으면서도 조금 다른 경로인 번째 최단경로를 알고 싶어 한다.
도시 에서 출발할 때, 각 도시까지 가는 번째 최단경로의 소요 시간을 구하는 프로그램을 작성하라.
입력
첫째 줄에 도시의 수 , 도로의 수 , 구하려는 순서 가 주어진다. 조건은 , , , 이다.
다음 개의 줄에는 도로 정보가 한 줄에 하나씩 주어진다. 각 줄은 세 정수 , , 로 이루어지며, 이는 번 도시에서 번 도시로 가는 데 의 시간이 걸린다는 뜻이다. 조건은 , 이다.
도시 번호는 번부터 번까지이다. 번 도시는 시작 도시이며, 시작 도시와 도착 도시가 모두 같은 두 도로는 주어지지 않는다.
출력
개의 줄을 출력한다. 번째 줄에는 번 도시에서 번 도시로 가는 번째 최단경로의 소요 시간을 출력한다.
경로의 소요 시간은 경로에 포함된 도로들의 이동 시간을 모두 더한 값이다. 번 도시에서 같은 번 도시로 가는 최단경로는 이지만, 일반적인 번째 최단경로는 이 아닐 수 있다. 번째 최단경로가 존재하지 않으면 을 출력한다.
경로는 같은 정점을 여러 번 지나도 된다.
힌트
추가 힌트는 제공되지 않는다.