VM 14 Bài 18 - Cây khung

Xem dạng PDF

Gửi bài giải


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

Dạng bài
Ngôn ngữ cho phép
C, C++, Go, Java, Kotlin, Pascal, PyPy, Python, Rust, Scratch

Cho một đơn đồ thị liên thông gồm ~N~ đỉnh, ~M~ cạnh. Các đỉnh của đồ thị được đánh số từ ~1~ đến ~N~. Tìm ~3~ cây khung khác nhau của đồ thị.

Định nghĩa cây khung của đồ thị:

Cây khung của đồ thị ~G~ gồm ~N~ đỉnh, ~M~ cạnh, là một đồ thị ~G'~ gồm tất cả ~N~ đỉnh của đồ thị ~G~, và đúng N-1 cạnh của đồ thị ~G~, và ~G'~ là đồ thị liên thông.

Input

Dòng đầu: ~2~ số nguyên dương ~N~ và ~M~ (~1 < N \le M~, ~N \le 1000~, ~M \le 1500~)

~M~ dòng tiếp theo, mỗi dòng gồm ~2~ số nguyên dương ~u~, ~v~ (~u~ khác ~v~) thể hiện ~1~ cạnh nối giữa ~u~ và ~v~. Input đảm bảo đồ thị liên thông và có ít nhất ~3~ cây khung khác nhau.

Output

Dòng ~1~ gồm ~1~ số nguyên dương ~K~ duy nhất - số cây khung mà bạn tìm được (~0 \le K \le 3~).

Tiếp theo là ~K~ nhóm dòng, mỗi nhóm dòng gồm đúng ~N-1~ dòng, thể hiện ~1~ cây khung.

Sample Input

3 3
1 2
2 3
3 1

Sample Output

3
1 2
2 3
2 3
3 1
1 2
3 1

Note

  • Nếu trong ~K~ cây khung mà bạn tìm được, có một cây khung không hợp lệ (có chu trình, không liên thông), hoặc có ~2~ cây khung giống nhau thì bạn không được điểm nào
  • Nếu ~K~ = ~0~, bạn không được điểm nào
  • Nếu ~K~ = ~1~, bạn được ~20~% số điểm của test
  • Nếu ~K~ = ~2~, bạn được ~40~% số điểm của test
  • Nếu ~K~ = ~3~, bạn được ~100~% số điểm của test

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.