Có \(n\) điểm tập trung dân cư đông đúc. Các điểm này được đánh số từ \(1\) đến \(n\) \((1 \leq n \leq 10^4)\). Mạng lưới giao thông công cộng là \(m\) đường xe lửa cao tốc một ray, mỗi đường nối một cặp điểm dân cư và chạy hai chiều \((0 \leq m \leq 10^5)\), và mọi cặp điểm đều có thể đi đến được với nhau. Để tránh sự va chạm giữa các con tàu cao tốc khi chúng có thể đi ngược chiều trên cùng một đường, chính quyền thành phố quyết định sửa lại các con đường đó thành một chiều. Tuy nhiên, sau khi thay đổi thì lại có một vấn đề bất cập sảy ra, đó là: tồn tại các cặp điểm tập trung dân cư không thể đi đến được nhau.
Chính vì vậy, chính quyền lại thêm một quyết định nữa, đó là sẽ xây dựng thêm một số ít nhất các tuyến đường mới để đảm bảo từ một điểm bất kỳ có thể đi tới điểm bất kỳ khác bằng tàu cao tốc.
Ví dụ, với \(n = 5\) và hiện có 4 đường: \(1 - 2\), \(2 - 3\), \(1 - 4\) và \(4 - 5\). Để đảm bảo yêu cầu đã nêu, người ta cần xây dựng ít nhất \(2\) đường mới, chẳng hạn \(5 - 3\) và \(3 - 1\).
Yêu cầu: Cho \(n\), \(m\) và các cặp \((a, b)\) mô tả mạng giao thông sau khi đã sửa thành đường \(1\) chiều. Mỗi cặp \((a, b)\) xác định tồn tại đường tàu \(a - b\). Hãy xác định số lượng tối thiểu các đường cần xây dựng thêm.
Input
Vào từ file văn bản MONORAIL.INP:
- Dòng đầu tiên chứa 2 số nguyên n và m,
- Mỗi dòng trong m dòng tiếp theo chứa 2 số nguyên a và b.
Output
Đưa ra file văn bản MONORAIL.OUT một số nguyên -- số đường mới.
Example
Test 1
Input
5 4
1 2
2 3
1 4
4 5
Output
2
Bình luận
Đăng nhập để bình luận
Chưa có bình luận nào.