trang chủ / đề bài / roadcons

Xây dựng đường

Đề bài

Mô tả

Có N thành phố được đánh số từ 1 đến N. Ban đầu chưa có con đường nào. Nhà vua muốn xây một số con đường (mỗi con đường nối hai thành phố khác nhau, đi được theo cả hai chiều) sao cho từ mỗi thành phố có thể tới bất kỳ thành phố nào khác bằng cách đi qua không quá 2 con đường.

Ngoài ra, có M cặp thành phố mà giữa chúng không được phép xây đường trực tiếp.

Nhiệm vụ của bạn: xây số con đường ít nhất thỏa mãn các điều kiện trên. Đầu vào đảm bảo luôn tồn tại phương án hợp lệ.

Dữ liệu vào

  • Dòng đầu chứa hai số nguyên N và M.
  • M dòng tiếp theo, mỗi dòng chứa hai số nguyên ai và bi, cho biết không được xây đường trực tiếp giữa thành phố ai và bi.

Mỗi cặp thành phố xuất hiện tối đa một lần trong danh sách cấm.

Dữ liệu ra

  • Dòng đầu in ra số nguyên s — số con đường tối thiểu cần xây.
  • s dòng tiếp theo, mỗi dòng chứa hai số nguyên u và v (1≤u,v≤N, u≠v) — mô tả một con đường được xây.

Nếu có nhiều đáp án cùng đạt số con đường tối thiểu, in ra bất kỳ đáp án nào.

Ràng buộc

  • 1≤N≤1000
  • 0≤M≤1000
  • 1≤ai,bi≤N, ai≠bi

Ví dụ

Input Output Giải thích
4 1
1 3
3
1 2
3 2
4 2
Xây 3 đường cùng đi qua thành phố 2. Không dùng cặp cấm (1,3), và khoảng cách giữa mọi cặp thành phố đều ≤2.
3 1
1 2
2
1 3
2 3
Chọn thành phố 3 làm trung tâm, nối tới 1 và 2.
2 0 1
2 1
Chỉ cần một con đường duy nhất.

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.402 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.6 gforth 0.7.3 gfortran 15.3.0 go 1.27.3 groovyc 5.1.3 javac 26.0.2.1 node 26.12.1 julia 1.13.2 kotlinc 2.4.21 lean 4.35.0 sbcl 2.2.9 lua 5.5.1 nim 2.2.12 fpc 3.2.2 fpc-themis 3.2.2 perl 5.42.3 php 8.5.12 pike 8.0 swipl 9.0.4 pypy3 7.3.23 python3 3.15.1 racket 8.7 ruby 4.0.8 rustc 1.99.1 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 swiftc 6.4.1 tclsh 8.6 bun 1.4.4 deno 2.9.8 v 0.5.2 zig 0.17.0