Khôi phục đồ thị
Đề bài
Mô tả
Có một đồ thị vô hướng, liên thông, không có khuyên và không có cạnh song song gồm đỉnh, được đánh số từ đến . Đồ thị có một tính chất đặc biệt: mỗi đỉnh có nhiều nhất cạnh kề với nó (tức bậc của mỗi đỉnh không vượt quá ).
Có người đã chọn một đỉnh của đồ thị và tính khoảng cách ngắn nhất từ đỉnh đó tới tất cả các đỉnh còn lại, thu được mảng : là khoảng cách ngắn nhất từ đỉnh được chọn tới đỉnh (số cạnh trên đường đi ngắn nhất).
Rất tiếc đồ thị ban đầu đã bị mất, chỉ còn lại mảng . Hãy khôi phục lại một đồ thị bất kỳ thoả mãn đầy đủ các điều kiện trên và có mảng khoảng cách ngắn nhất đúng bằng , hoặc cho biết không tồn tại đồ thị nào như vậy.
Dữ liệu vào
- Dòng đầu chứa hai số nguyên và .
- Dòng thứ hai chứa số nguyên .
Dữ liệu ra
- Nếu không tồn tại đồ thị thoả mãn, in ra một số .
- Ngược lại, dòng đầu in số nguyên là số cạnh của đồ thị tìm được (). Trong dòng tiếp theo, mỗi dòng in hai số nguyên và (; ) mô tả một cạnh nối đỉnh và đỉnh . Đồ thị không được có khuyên hay cạnh song song.
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 |
|---|---|---|
| 3 2 0 1 1 |
2 1 2 1 3 |
Đỉnh 1 là đỉnh được chọn (khoảng cách 0). Nối 1 với 2 và 1 với 3, cả hai cách đỉnh 1 đúng 1 bước. Mỗi đỉnh có bậc tối đa 2. |
| 4 2 2 0 1 3 |
3 2 3 3 1 1 4 |
Đỉnh 2 được chọn. Đường đi 2 - 3 - 1 - 4 cho khoảng cách 0, 1, 2, 3 tới các đỉnh 2, 3, 1, 4. Mỗi đỉnh có bậc tối đa 2. |
| 3 1 0 0 0 |
-1 | Có tới ba đỉnh cùng khoảng cách 0, nghĩa là ba đỉnh gốc, điều này không thể xảy ra. |
Bình luận