Submit solution
Points:
100.00
Time limit:
1.0s
Memory limit:
100M
Input:
stdin
Output:
stdout
Author:
Problem type
Allowed languages
C, C++, GAS64, Pascal, Perl, PHP, Python, Sed, TCL, Text
Trên một mặt phẳng tọa độ Oxy, có ~N~ thị trấn. Thị trấn thứ ~i~ có tọa độ là ~(x_i,y_i)~. Có thể có nhiều trị trấn có cùng tọa độ với nhau. Giữa hai trị trấn ~i~ và ~j~, có thể xây dựng một tuyến đường hai chiều nối liền hai thị trấn này với chi phí là ~min(|x_i − x_j|, |y_i − y_j|)~.
Yêu cầu đặt ra là hãy xây dựng các tuyến đường với tổng chi phí nhỏ nhất, sao cho giữa hai thị trấn bất kì đều có thể đi được đến nhau.
Dữ liệu
- Dòng đầu tiên ghi số nguyên ~N~ (2 ≤ ~N~ ≤ ~10^5~) - số thị trấn
- ~N~ dòng tiếp theo, dòng thứ ~i~ ghi hai số nguyên ~x_i~ và ~y_i~ (1 ≤ ~x_i~, ~y_i~ ≤ ~10^9~) - tọa độ của thị trấn thứ ~i~
Kết quả
- Ghi ra một số nguyên duy nhất là tổng chi phí xây dựng các tuyến đường nhỏ nhất
Ví dụ
Sample Input 1
5
4 9
9 5
0 2
7 1
3 4
Sample Output 1
5
Sample Input 2
3
3 5
3 5
3 5
Sample Output 2
0
Giải thích
Ở ví dụ đầu tiên, ta sẽ xây dựng các tuyến đường sau:
- Tuyến đường giữa thị trấn 2 và 4 với chi phí 2
- Tuyến đường giữa thị trấn 3 và 4 với chi phí 1
- Tuyến đường giữa thị trấn 2 và 5 với chi phí 1
- Tuyến đường giữa thị trấn 1 và 5 với chi phí 1
Tổng chi phí sẽ là: 2 + 1 + 1 + 1 = 5. Đây là cách xây dựng tối ưu nhất.
Giới hạn
Subtask 1 (20 điểm)
- ~n~ ≤ 103
Subtask 2 (30 điểm)
- Không có giới hạn gì thêm
Nguồn: Free Contest
Comments