Trượt băng
Đề bài
Mô tả
Trên một mặt băng phẳng có đống tuyết, đống thứ nằm tại tọa độ nguyên . Tất cả các đống tuyết đều ở những vị trí đôi một khác nhau.
Một người trượt băng chỉ có thể di chuyển bằng cách đứng tại một đống tuyết, đạp chân theo một trong bốn hướng (bắc, nam, đông, tây) rồi trượt cho tới khi va vào một đống tuyết khác và dừng lại ở đó. Hướng bắc trùng với chiều dương trục , hướng đông trùng với chiều dương trục .
Nói cách khác, từ đống tuyết chỉ có thể trượt tới đống tuyết khi hai đống nằm cùng một hàng ngang () hoặc cùng một cột dọc (). Nếu trên đoạn thẳng nối hai đống còn có đống tuyết khác thì người trượt sẽ dừng ở đống gần hơn, nhưng từ đó lại đi tiếp được, nên khả năng di chuyển giữa hai đống cùng hàng hoặc cùng cột không thay đổi.
Với cách di chuyển như vậy, có thể tồn tại những cặp đống tuyết không thể đi từ đống này tới đống kia. Hãy đắp thêm một số đống tuyết mới (cũng tại các tọa độ nguyên, tùy ý chọn) sao cho từ một đống tuyết bất kỳ đều có thể tới được mọi đống tuyết khác. Tìm số đống tuyết ít nhất cần đắp thêm.
Dữ liệu vào
- Dòng đầu chứa số nguyên là số đống tuyết ban đầu.
- dòng tiếp theo, dòng thứ chứa hai số nguyên và là tọa độ của đống tuyết thứ .
Dữ liệu ra
Một số nguyên duy nhất là số đống tuyết ít nhất cần đắp thêm.
Ràng buộc
- Các vị trí đôi một khác nhau.
Ví dụ
| Input | Output | Giải thích |
|---|---|---|
| 2 2 1 1 2 |
1 | Hai đống và khác cả hoành độ lẫn tung độ nên không tới được nhau. Đắp thêm một đống tại (hoặc ) là đủ: từ trượt sang theo hướng tây, rồi từ trượt lên theo hướng bắc. |
| 2 2 1 4 1 |
0 | Hai đống cùng tung độ nên đã đi lại được giữa chúng, không cần đắp thêm. |
| 3 1 1 1 2 2 2 |
0 | và cùng hoành độ, và cùng tung độ, nên cả ba đống đã liên thông. |
Bình luận