[VOI Training] Bài NP-khó

Xem PDF

Nộp bài


Điểm: 20 (thành phần)
Thời gian: 5.0s
Bộ nhớ: 512M

Tác giả:
Dạng bài

Cho đồ thị vô hướng gồm \(n\) đỉnh và \(m\) cạnh. Các đỉnh được đánh số từ \(1\) đến \(n\) và các cạnh được đánh số từ \(1\) đến \(m\). Cạnh thứ \(i\) \((1\leq i\leq m)\) có trọng số là \(w_i\). Cho trước số nguyên \(k\), bạn hãy lập trình tính toán độ dài của đường đi đơn ngắn nhất, xuất phát ở đỉnh \(1\) và kết thúc ở đỉnh \(n\), mà có đúng \(k\) cạnh. Một đường đi đơn là đường đi mà không có đỉnh nào được ghé thăm quá một lần.


Input

Dòng đầu chứa ba số nguyên dương \(n\), \(m\), và \(k\).

Dòng thứ \(i\) trong \(m\) dòng tiếp theo chứa ba số nguyên dương \(x_i\), \(y_i\), \(w_i\) mô tả một cạnh vô hướng nối đỉnh \(x_i\) và đỉnh \(y_i\) của đồ thị, với trọng số là \(w_i\). \((x_i \ne y_i)\)


Output

In ra độ dài của đường đi ngắn nhất tìm được. Nếu không tìm được đường đi nào thỏa mãn các ràng buộc ở đề bài thì in ra \(-1\).


Ví dụ

Sample input
6 6 3
1 2 3
2 3 1
3 6 4
1 4 1
4 5 5
5 6 9
Sample output
8

Ràng buộc

Trong tất cả các test:

  • \(2\leq n < 10^6\)
  • \(1\leq m, k < 10^6\).
  • \(1\leq w_i \leq 10^8\).
  • Không tồn tại \(i\ne j\) sao cho \(x_i=x_j\) và \(y_i=y_j\).

Subtasks

  • Subtask 1: \(\text{min}(n, m, k)\leq 3\).
  • Subtask 2: \(\text{min}(n, m, k)\leq 4\).
  • Subtask 3: \(\text{min}(n, m, k)\leq 5\).