#2834. ROADS - Xây dựng các con đường

Bộ nhớ: 256 MiB Thời gian: 1000 ms Nhập/xuất từ luồng chuẩn
Kiểu bài: Thông thường Kiểu chấm: Trình chấm ngoài
Đưa lên bởi: Trùm CUỐI

Đề bài

n thành phố và ban đầu đã có một số con đường. Nhiệm vụ của bạn là xây dựng thêm các con đường mới để kết nối tất cả các thành phố. Giữa hai thành phố bất kỳ chỉ có thể xây dựng tối đa một con đường. Bạn cần tìm số lượng con đường tối thiểu cần xây và cho biết đó là những con đường nào.

Dữ liệu:

  • Dòng đầu tiên chứa hai số nguyên n m : số thành phố và số con đường đã có.
  • m dòng tiếp theo mô tả các con đường trong danh sách đã có. Mỗi dòng chứa hai số nguyên a b : có một con đường giữa thành phố a b .

Kết quả:

  • Dòng đầu tiên, in ra số nguyên k : số lượng con đường tối thiểu cần xây.
  • k dòng tiếp theo, mỗi dòng in ra hai thành phố cần được nối với nhau. Bạn có thể in ra bất kỳ đáp án hợp lệ nào.

Ví dụ: Dữ liệu:

4 1
1 2

Kết quả:

2
1 3
2 3

Giới hạn:

  • 1 \le n \le 10^5
  • 0 \le m \le 2 \times 10^5
  • 1 \le a, b \le n