trang chủ / bài tập / roadprob

Đường phố Berland

Đề bài

Mô tả

Thủ đô của Berland có n nút giao thông, một số cặp nút được nối với nhau bằng đường hai chiều. Giữa mỗi cặp nút có nhiều nhất một con đường, và từ nút bất kỳ đều đi tới được mọi nút khác.

Vì kẹt xe ngày càng nghiêm trọng, ban quản lý thành phố muốn mạng lưới đạt tiêu chuẩn: giữa hai nút giao bất kỳ luôn tồn tại ít nhất hai đường đi không dùng chung con đường nào (hai đường đi đó được phép đi qua chung nút giao).

Hãy xây thêm số con đường ít nhất để tiêu chuẩn trên được thoả mãn. Mỗi con đường mới nối hai nút giao khác nhau, và sau khi xây xong mạng lưới vẫn phải giữ nguyên tính chất giữa mỗi cặp nút có nhiều nhất một con đường (nghĩa là không được xây một con đường trùng với con đường đã có, cũng không được xây hai con đường mới nối cùng một cặp nút).

Dữ liệu vào

  • Dòng đầu chứa hai số nguyên nm: số nút giao và số con đường hiện có.
  • m dòng tiếp theo, dòng thứ i chứa hai số nguyên ai, bi: con đường thứ i nối nút ai và nút bi.

Dữ liệu ra

  • Dòng đầu in ra t: số con đường ít nhất cần xây thêm.
  • t dòng tiếp theo, mỗi dòng in hai số nguyên mô tả một con đường mới. Có thể in các con đường theo thứ tự bất kỳ, và hai đầu mút của mỗi con đường cũng theo thứ tự bất kỳ.

Nếu mạng lưới đã đạt tiêu chuẩn, in ra duy nhất số 0. Nếu không có cách xây nào thoả mãn, in ra 1.

Nếu có nhiều đáp án cùng số lượng nhỏ nhất, in ra đáp án bất kỳ.

Ràng buộc

  • 2n900
  • 1m100000
  • 1ai,binaibi
  • Không có hai con đường nối cùng một cặp nút
  • Đồ thị đã cho liên thông

Ví dụ

Input Output Giải thích
4 3
1 2
2 3
3 4
1
1 4
Mạng lưới là một đường thẳng 1234, cả ba con đường đều là cầu. Nối thêm 14 tạo thành một chu trình chứa mọi con đường.
4 4
1 2
2 3
2 4
3 4
1
1 3
Chỉ con đường 12 là cầu. Nối thêm 13 là đủ; đáp án 14 cũng được chấp nhận.
2 1
1 2
-1 Chỉ có hai nút và chúng đã được nối. Con đường duy nhất có thể xây thêm là 12, nhưng nó đã tồn tại nên không có cách nào.

Bình luận

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

gnatmake 12.2.0 a68g 3.1.2 nasm 2.16.1 as_x64 2.47 awk 1.3.4 gcc 16.2.0 dotnet 10.0.400 g++ 16.2.0 g++-themis 16.2.0 g++17 16.2.0 g++20 16.2.0 g++23 16.2.0 clang++ 22.1.8 dmd 2.113.0 dart 3.13.2 gforth 0.7.3 gfortran 12.2.0 go 1.27.0 groovyc 5.1.1 javac 25.0.4 node 26.8.1 julia 1.12.7 kotlinc 2.4.10 lean 4.33.1 sbcl 2.2.9 lua 5.4.9 nim 2.2.10 fpc 3.2.2 fpc-themis 3.2.2 perl 5.36.0 php 8.5.10 pike 8.0 swipl 9.0.4 pypy3 7.3.23 python3 3.14.7 racket 8.7 ruby 4.0.6 rustc 1.98.0 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 swiftc 6.3.3 tclsh 8.6 bun 1.4.0 deno 2.9.6 v 0.5.2 zig 0.16.0