Đường đi ngắn nhất có điều kiện

Xem PDF



Tác giả:
Dạng bài
Ngôn ngữ cho phép
Assembly, Awk, C, C#, C++, Clang, Cobol, D, Groovy, Haskell, JS, Java, Kotlin, Lua, Node JS, OCaml, ObjectiveC, Output, PHP, Pascal, Perl, Prolog, Pypy, Pypy 3, Python, Ruby, Rust, Scala, Scratch, Swift
Điểm: 1800 (p) Thời gian: 1.0s Bộ nhớ: 256M Input: bàn phím Output: màn hình

Có \(n\) thành phố và \(m\) con đường hai chiều. Cần vận chuyển các mặt hàng thiết yếu từ thành phố \(1\) tới tất cả các thành phố khác (việc vận chuyển tới các thành phố khác luôn thực hiện được).

Nhưng mọi con đường đều có thu phí. May mắn thay, bạn có \(k\) thẻ ưu đãi, có nghĩa là khi đi từ thành phố \(1\) tới bất kì thành phố nào khác, bạn có thể chọn tối đa \(k\) con đường và không bị tính phí khi đi qua \(k\) con đường đó.

Bạn cần xác định chi phí tối thiểu để có thể chuyển hàng tới mỗi thành phố. Lưu ý bạn có thể xem việc vận chuyển hàng hóa từ thành phố \(1\) tới các thành phố khác là độc lập nhau.

Input

  • Dòng đầu tiên chứa số nguyên \(n, m, k\) \((1 \leq n \leq 10^{5}, 1 \leq m \leq 5 \times 10^{5}, 1 \leq k \leq 18)\).
  • \(m\) dòng tiếp theo, mỗi dòng chứa \(3\) số nguyên \(u, v, w\) \((1 \leq u, v \leq n, 1 \leq w \leq 10^{6})\) mô tả \(1\) con đường nối \(2\) thành phố \(u, v\) với chi phí \(w\) để đi qua.

Output

  • Gồm \(n\) số nguyên, số thứ \(i\) ứng với chi phí tối thiểu với thành phố \(i\).

Example

Test 1

Input
5 6 1
1 2 2
1 3 6
2 4 6
2 5 8
3 5 4
4 5 1
Output
0 0 0 2 2

Nguồn: CĐ DHBB Chuyên Hạ Long

Bình luận

Mới nhất
Tải bình luận...

Không có bình luận nào.