Hoàn thiện đồ thị
Đề bài
Mô tả
Cho một đồ thị vô hướng gồm đỉnh được đánh số từ đến và cạnh. Mỗi cạnh có một trọng số là số nguyên dương.
Một số trọng số đã bị xoá: các cạnh này được ghi trọng số bằng . Bạn cần gán lại cho mỗi cạnh bị xoá một trọng số nguyên dương (không vượt quá ) sao cho độ dài đường đi ngắn nhất giữa hai đỉnh và trong đồ thị thu được đúng bằng .
Các cạnh có trọng số khác phải giữ nguyên trọng số. Hãy xác định xem có cách gán như vậy hay không, và nếu có thì đưa ra một cách bất kỳ.
Giữa mỗi cặp đỉnh có nhiều nhất một cạnh.
Dữ liệu vào
- Dòng đầu chứa năm số nguyên , , , , .
- dòng tiếp theo, mỗi dòng chứa ba số nguyên , , mô tả một cạnh giữa đỉnh và có trọng số . Nếu thì trọng số của cạnh này đã bị xoá.
Dữ liệu ra
Nếu không tồn tại cách gán thoả mãn, in ra một dòng duy nhất chứa NO.
Ngược lại, dòng đầu in ra YES. Tiếp theo in ra dòng mô tả các cạnh của đồ thị kết quả: mỗi dòng gồm ba số , , . Tập cạnh phải trùng khớp với đồ thị ban đầu, các trọng số không bị xoá phải giữ nguyên, còn các trọng số mới là số nguyên dương không vượt quá . Đường đi ngắn nhất giữa và phải có độ dài đúng bằng .
Thứ tự các cạnh trong output không quan trọng. Nếu có nhiều đáp án, in ra một đáp án bất kỳ.
Ràng buộc
- ,
- ,
Ví dụ
| Input | Output | Giải thích |
|---|---|---|
| 5 5 13 0 4 0 1 5 2 1 2 3 2 3 1 4 0 4 3 4 |
YES 0 1 5 2 1 2 3 2 3 1 4 8 4 3 4 |
Chỉ có một cạnh bị xoá là . Gán trọng số cho nó thì đường đi ngắn nhất từ đến là có độ dài . |
| 2 1 999999999 1 0 0 1 1000000000 |
NO | Không có cạnh nào bị xoá, đường đi ngắn nhất cố định bằng . |
| 2 1 123456789 0 1 0 1 0 |
YES 0 1 123456789 |
Chỉ có một cạnh duy nhất và nó bị xoá, nên chỉ có thể gán trọng số bằng đúng . |
Bình luận