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

Xây dựng đường

Đề bài

Mô tả

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 NM.
  • M dòng tiếp theo, mỗi dòng chứa hai số nguyên aibi, cho biết không được xây đường trực tiếp giữa thành phố aibi.

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 uv (1u,vN, uv) — 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

  • 1N1000
  • 0M1000
  • 1ai,biN, aibi

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 12.
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.46 awk 1.3.4 gcc 16.1.0 csc 6.12.0.200 g++ 16.1.0 g++-themis 16.1.0 g++17 16.1.0 g++20 16.1.0 g++23 16.1.0 clang++ 22.1.6 dmd 2.112.0 dart 3.12.1 gforth 0.7.3 gfortran 12.2.0 GO groovyc 5.0.6 javac 25.0.3 node 26.2.0 kotlinc 2.3.21 sbcl 2.2.9 lua 5.4.8 nim 2.2.10 fpc 3.2.2 fpc-themis 3.2.2 perl 5.36.0 php 8.5.6 pike 8.0 pypy3 7.3.23 python3 3.14.5 racket 8.7 ruby 4.0.5 rustc 1.96.0 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 tclsh 8.6 bun 1.3.14 deno 2.8.1 v 0.5.1 zig 0.16.0