Xây dựng đường
Đề bài
Mô tả
Có thành phố được đánh số từ đến . Ban đầu chưa có con đường nào. Nhà vua muốn xây một số con đường (mỗi con đường nối hai thành phố khác nhau, đi được theo cả hai chiều) sao cho từ mỗi thành phố có thể tới bất kỳ thành phố nào khác bằng cách đi qua không quá con đường.
Ngoài ra, có cặp thành phố mà giữa chúng không được phép xây đường trực tiếp.
Nhiệm vụ của bạn: xây số con đường ít nhất thỏa mãn các điều kiện trên. Đầu vào đảm bảo luôn tồn tại phương án hợp lệ.
Dữ liệu vào
- Dòng đầu chứa hai số nguyên và .
- dòng tiếp theo, mỗi dòng chứa hai số nguyên và , cho biết không được xây đường trực tiếp giữa thành phố và .
Mỗi cặp thành phố xuất hiện tối đa một lần trong danh sách cấm.
Dữ liệu ra
- Dòng đầu in ra số nguyên — số con đường tối thiểu cần xây.
- dòng tiếp theo, mỗi dòng chứa hai số nguyên và (, ) — mô tả một con đường được xây.
Nếu có nhiều đáp án cùng đạt số con đường tối thiểu, in ra bất kỳ đáp án nào.
Ràng buộc
- ,
Ví dụ
| Input | Output | Giải thích |
|---|---|---|
| 4 1 1 3 |
3 1 2 3 2 4 2 |
Xây đường cùng đi qua thành phố . Không dùng cặp cấm , và khoảng cách giữa mọi cặp thành phố đều . |
| 3 1 1 2 |
2 1 3 2 3 |
Chọn thành phố làm trung tâm, nối tới và . |
| 2 0 | 1 2 1 |
Chỉ cần một con đường duy nhất. |
Bình luận