Xây đường
Xem dạng PDF
Gửi bài giải
Điểm:
100,00 (OI)
Giới hạn thời gian:
1.0s
Giới hạn bộ nhớ:
256M
Input:
stdin
Output:
stdout
Dạng bài
Ngôn ngữ cho phép
C, C++, Java, Kotlin, Pascal, PyPy, Python, Scratch
Đất nước Byteland có n thành phố và m con đường hai chiều. Mục tiêu là xây thêm các con đường sao cho từ bất kỳ thành phố nào cũng có thể đi đến bất kỳ thành phố nào khác.
Hãy tìm:
Số con đường mới ít nhất cần xây. Một phương án xây các con đường đó.
Input
Dòng đầu gồm hai số nguyên n và m: số thành phố và số con đường hiện có. Các thành phố được đánh số từ 1 đến n. m dòng tiếp theo, mỗi dòng gồm hai số a, b, cho biết có một con đường nối giữa hai thành phố đó.
Output
In ra số nguyên k: số con đường mới cần xây ít nhất. Sau đó in k dòng, mỗi dòng gồm hai số mô tả một con đường cần xây.
Có thể in ra bất kỳ đáp án hợp lệ nào.
Ràng buộc:
~1 ≤ n ≤ 100000;~
~1 ≤ m ≤ 200000;~
~1 ≤ a, b ≤ n;~
Ví dụ
Input
4 2
1 2
3 4
Output
1
2 3
Bình luận