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

Xây lại đường

Đề bài

Mô tả

n thành phố và đúng n1 con đường hai chiều nối giữa chúng. Do đường sá được xây dựng không có quy hoạch, mạng lưới hiện tại có thể không liên thông (không phải từ thành phố nào cũng đi được tới mọi thành phố khác) và có thể chứa chu trình.

Chính quyền muốn cải tạo lại sao cho từ mỗi thành phố đều có thể đi tới tất cả các thành phố còn lại. Mỗi ngày họ có thể thực hiện một thao tác: đóng một con đường đang tồn tại và ngay lập tức xây một con đường mới nối hai thành phố bất kỳ (con đường mới phải nối hai thành phố khác nhau).

Hãy xác định số ngày ít nhất cần thiết để mạng lưới trở nên liên thông, đồng thời đưa ra kế hoạch đóng đường cũ và xây đường mới.

Dữ liệu vào

  • Dòng đầu chứa số nguyên n, số thành phố.
  • n1 dòng tiếp theo, mỗi dòng chứa hai số nguyên ai, bi mô tả một con đường nối thành phố aibi.

Giữa một cặp thành phố có không quá một con đường, và không có con đường nào nối một thành phố với chính nó.

Dữ liệu ra

  • Dòng đầu ghi số nguyên t, số ngày ít nhất cần thiết.
  • t dòng tiếp theo, mỗi dòng mô tả một ngày dưới dạng i j u v: đóng con đường giữa hai thành phố ij (con đường này phải đang tồn tại tại thời điểm đó) và xây con đường mới giữa hai thành phố uv.

Nếu có nhiều đáp án, in ra một đáp án bất kỳ.

Ràng buộc

  • 2n1000
  • 1ai,bin, aibi

Ví dụ

Input Output Giải thích
7
1 2
2 3
3 1
4 5
5 6
6 7
1
3 1 3 7
Ba thành phố 1, 2, 3 tạo thành một chu trình; 4, 5, 6, 7 tạo thành một đường. Đóng con đường 3-1 (đang thừa trong chu trình) và xây con đường 3-7 để nối hai phần lại. Sau đó cả 7 thành phố liên thông.
2
1 2
0 Mạng lưới đã liên thông sẵn, không cần thao tác nào.
4
1 4
3 1
3 4
1
3 4 2 4
Ba thành phố 1, 3, 4 tạo chu trình, còn thành phố 2 tách biệt. Đóng con đường 3-4 rồi nối 2-4 để đưa thành phố 2 vào mạng lưới.

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 1.26.3 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