Xtreme NP-hard Problem?!

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

어려움9그래프최단 경로동적 계획법완전 탐색아직 제출이 없습니다시간 제한5초메모리 제한1024 MB

문제

주의! 이 문제는 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을 출력한다.

제한

  • 2n<1062 \le n < 10^6
  • 1m,k<1061 \le m, k < 10^6
  • 1xi,yin1 \le x_i, y_i \le n
  • xiyix_i \ne y_i (1im)(1 \le i \le m)
  • ij{xi,yi}{xj,yj}i \ne j \Rightarrow \{x_i, y_i\} \ne \{x_j, y_j\} (1i,jm)(1 \le i, j \le m)
  • 1wi1081 \le w_i \le 10^8