JOI 2007 - Fiber

Xem PDF



Dạng bài
Ngôn ngữ cho phép
Assembly, Awk, C, C#, C++, Clang, Cobol, D, Groovy, Haskell, JS, Java, Kotlin, Lua, Node JS, OCaml, ObjectiveC, PHP, Pascal, Perl, Prolog, Pypy, Pypy 3, Python, Ruby, Rust, Scala, Scratch, Swift
Điểm: 800 (p) Thời gian: 5.0s Bộ nhớ: 256M Input: bàn phím Output: màn hình

Croatia đang triển khai kế hoạch nối tất cả các thành phố trong nước bằng mạng cáp quang. Cáp quang cho phép liên lạc nhanh và chất lượng cao, ngay cả khi thông tin phải đi qua nhiều thành phố trung gian. Chẳng hạn, nếu có cáp nối \(A_i\) với \(A_{i+1}\) với mọi \(1\le i<k\), thì \(A_1\)\(A_k\) có thể liên lạc với nhau qua mạng cáp quang.

Chính phủ muốn mọi cặp thành phố đều có thể liên lạc qua mạng này. Tuy nhiên, có nhiều doanh nghiệp lắp đặt cáp, nên chưa có ai nắm được toàn bộ mạng hiện tại. Dựa trên thông tin do các doanh nghiệp cung cấp, hãy tính số tuyến cáp quang ít nhất cần lắp thêm để mọi cặp thành phố đều có thể liên lạc với nhau.

Mỗi tuyến cáp nối hai thành phố và cho phép liên lạc theo cả hai chiều.

Dữ liệu vào

Đọc từ đầu vào chuẩn:

  • Dòng đầu chứa số nguyên \(n\), là số thành phố. Các thành phố được đánh số từ \(1\) đến \(n\).
  • Dòng thứ hai chứa số nguyên \(m\), là số tuyến cáp quang đã được lắp đặt.
  • Dòng thứ \(i+2\) (\(1\le i\le m\)) chứa hai số nguyên khác nhau \(a_i,b_i\), phân cách bằng dấu cách, cho biết có một tuyến cáp nối hai thành phố \(a_i\)\(b_i\).

Có thể có nhiều tuyến cáp giữa cùng một cặp thành phố.

Dữ liệu ra

Ghi ra đầu ra chuẩn số tuyến cáp quang ít nhất cần lắp thêm để mọi cặp thành phố đều có thể liên lạc qua mạng. Nếu mạng hiện tại đã đáp ứng yêu cầu, ghi 0.

Ràng buộc

  • \(1\le n\le10\,000\).
  • \(1\le m\le30\,000\).
  • \(1\le a_i,b_i\le n\)\(a_i\ne b_i\) (\(1\le i\le m\)).

Phân nhóm

Các bộ dữ liệu được chấm độc lập; không có điều kiện ràng buộc riêng cho từng nhóm.

  • Các bộ dữ liệu \(01\)\(05\): \(20\) điểm mỗi bộ, tổng cộng \(100\) điểm; áp dụng toàn bộ ràng buộc trên.

Ví dụ

Ví dụ 1

Input
8
7
3 5
4 1
5 4
7 5
4 7
1 4
6 8
Output
2
Giải thích

Mạng có ba nhóm thành phố liên lạc được với nhau: \(\{1,3,4,5,7\}\), \(\{2\}\)\(\{6,8\}\). Hai dòng 4 11 4 mô tả hai tuyến cáp giữa cùng một cặp thành phố. Chỉ cần lắp thêm hai tuyến cáp, chẳng hạn nối thành phố \(2\) với \(1\) và thành phố \(6\) với \(4\). Đây là số tuyến ít nhất cần lắp thêm.

Bình luận

Mới nhất
Tải bình luận...

Không có bình luận nào.

Kỳ thi: