CSES - Building Roads

Xem dạng PDF

Gửi bài giải

Điểm: 1,00 (OI)
Giới hạn thời gian: 1.0s
Giới hạn bộ nhớ: 512M
Input: stdin
Output: stdout

Nguồn bài:
https://cses.fi/problemset/task/1666
Dạng bài
Ngôn ngữ cho phép
C, C++, Java, Kotlin, Pascal, PyPy, Python, Scratch

Byteland has ~n~ cities, and ~m~ roads between them. The goal is to construct new roads so that there is a route between any two cities.

Your task is to find out the minimum number of roads required, and also determine which roads should be built.

Input

  • The first input line has two integers ~n~ and ~m~: the number of cities and roads. The cities are numbered ~1,2,\dots,n~.

After that, there are ~m~ lines describing the roads. Each line has two integers ~a~ and ~b~: there is a road between those cities.

A road always connects two different cities, and there is at most one road between any two cities.

Output

  • First print an integer ~k~: the number of required roads.

Then, print ~k~ lines that describe the new roads. You can print any valid solution.

Constraints

  • ~1 \le n \le 10^5~
  • ~1 \le m \le 2 \cdot 10^5~
  • ~1 \le a,b \le n~

Example Input

4 2
1 2
3 4

Example Output

1
2 3

Bình luận

Hãy đọc nội quy trước khi bình luận.


Không có bình luận tại thời điểm này.