도시 1에서 도시 n까지 가는 경로 중 비용이 가장 큰 k개 간선의 합만 지불할 때 최소 비용을 구한다. 경로 길이가 k 이하면 모든 간선 비용을 지불한다.
어려움9그래프최단 경로정렬그리디아직 제출이 없습니다시간 제한3초메모리 제한512 MB2112년 세계 프로그래밍 컵을 치르려고 러시아의 유럽 지역에 유료 도로망을 새로 깔았다. 이 도로망은 도시 n개를 잇는 양방향 도로 m개로 이루어진다. 각 도로는 서로 다른 두 도시를 직접 잇고, 같은 도시 쌍을 잇는 도로는 둘 이상 없으며, 이 도로망만 써서 어느 도시에서 어느 도시로든 갈 수 있다. 요금 정산을 편하게 하려고 두 도로가 도시 밖에서 교차하지 않도록 놓았다.
도로마다 양의 정수 요금이 정해져 있다. 원래는 운전자가 유료 도로를 이용하면 지나간 도로의 요금을 모두 더한 금액을 낸다. 두 수도를 오가는 자동차 여행을 늘리려고 운영사 Radishchev는 특별 할인을 내놓았다. 상트페테르부르크에서 모스크바로 가는 여행이라면 경로에서 가장 비싼 도로 k개의 요금만 내면 된다.
정확히 말하면 경로가 도로 l개로 이루어져 있다고 하자. 경로에서 가장 비싼 도로의 요금을 c1, 두 번째로 비싼 도로의 요금을 c2라 하는 식으로 두면 c1≥c2≥c3≥⋯≥cl 이 된다. l≤k 이면 경로가 짧아서 할인이 없고 운전자는 평소처럼 ∑i=1lci 를 낸다. l>k 이면 가장 비싼 도로 k개의 요금, 즉 ∑i=1kci 만 낸다.
Radishchev의 수석 분석가가 되어 상트페테르부르크에서 모스크바까지 가는 가장 싼 여행 비용을 구하라.
첫째 줄에 정수 n, m, k (2≤n≤3000, 1≤m≤3000, 1≤k<n)가 주어진다. 각각 도시의 수, 도로의 수, 한 번의 여행에서 요금을 내는 도로의 최대 개수이다.
다음 m개 줄에 도로 정보가 주어진다. i번째 줄에는 정수 ui, vi, wi (1≤ui,vi≤n, ui=vi, 1≤wi≤109)가 주어지며, 도시 ui와 도시 vi를 잇는 양방향 도로의 요금이 어느 방향으로 가든 wi라는 뜻이다. 같은 도시 쌍을 잇는 도로는 많아야 하나이고, 주어진 도로만 써서 모든 도시 사이를 오갈 수 있다.
1번 도시(상트페테르부르크)에서 n번 도시(모스크바)까지 가는 최소 여행 비용을 정수 하나로 출력한다.