[VOI Training] Bài NP-khó

View as PDF

Submit solution


Points: 20 (partial)
Time limit: 5.0s
Memory limit: 512M

Author:
Problem type

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\).