만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

Xtreme NP-hard Problem?!

시간 제한5초메모리 제한1024 MB

요약
정점 1에서 n까지 정확히 k개의 간선을 쓰는 단순 경로 중 가중치 합이 최소인 것을 찾고, 없으면 -1을 출력한다. n, m, k가 10^6까지 커서 문제 자체가 NP-난해임을 명시한다.
난이도

어려움10점 중 9점

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

문제

주의! 이 문제는 NP-hard로 밝혀졌습니다. 하지만 NP-hard 문제를 출제하면 안 된다는 규정이 없었기 때문에 그냥 두기로 했습니다.

정점 nn개와 간선 mm개로 이루어진 양방향 그래프가 있다. 정점에는 1번부터 nn번까지, 간선에는 1번부터 mm번까지 번호가 붙어 있고, ii번 간선의 가중치는 wiw_i이다.

자연수 kk가 주어질 때, 1번 정점에서 출발해 nn번 정점에서 끝나면서 간선을 정확히 kk개 사용하는 단순 경로 중 가장 짧은 것의 길이를 구하여라.

단순 경로는 같은 정점을 두 번 지나지 않는 경로이고, 경로의 길이는 그 경로를 이루는 간선의 가중치 합이다.

입력

첫째 줄에 세 정수 nn, mm, kk가 공백으로 구분되어 주어진다.

다음 mm개 줄 중 ii번째 줄에는 세 정수 xix_i, yiy_i, wiw_i가 공백으로 구분되어 주어진다. ii번 간선이 xix_i번 정점과 yiy_i번 정점을 잇는 가중치 wiw_i의 간선이라는 뜻이다.

루프와 다중 간선은 주어지지 않는다.

출력

1번 정점에서 출발해 nn번 정점에서 끝나면서 간선을 정확히 kk개 사용하는 가장 짧은 단순 경로의 길이를 출력한다. 그러한 경로가 없으면 -1을 출력한다.

제한

  • 2≤n<1062 \le n < 10^6
  • 1≤m,k<1061 \le m, k < 10^6
  • 1≤xi,yi≤n1 \le x_i, y_i \le n
  • xi≠yix_i \ne y_i (1≤i≤m)(1 \le i \le m)
  • i≠j⇒{xi,yi}≠{xj,yj}i \ne j \Rightarrow \{x_i, y_i\} \ne \{x_j, y_j\} (1≤i,j≤m)(1 \le i, j \le m)
  • 1≤wi≤1081 \le w_i \le 10^8

예제3

  1. 예제 1

    입력
    6 6 3
    1 2 3
    2 3 1
    3 6 4
    1 4 1
    4 5 5
    5 6 9
    
    예상 출력
    8
    
  2. 예제 2

    입력
    2 1 1
    1 2 7
    
    예상 출력
    7
    
  3. 예제 3

    입력
    4 4 2
    1 2 5
    2 3 5
    3 4 5
    4 1 5
    
    예상 출력
    -1