#include <bits/stdc++.h>
//#define int long long
using namespace std;
struct dsu{
int a[100005],num;
void init(int n){
for (int i=1;i<=n;i++){
a[i]=i;
}
num=n;
}
int find(int x){
if (a[x]!=x) {
a[x]=find(a[x]);
}
return a[x];
}
void u(int x,int y){
x=find(x);
y=find(y);
if (x!=y) {
a[x]=y;
num--;
}
}
};
pair<int,int> a[55];
int n;
dsu d;
bool check(int t){
for (int i=2;i<=n;i++){
for (int j=1;j<i;j++) {
if (abs(a[i].first-a[j].first)+abs(a[i].second-a[j].second)<=2*t) d.u(i,j);
}
}
return d.num==1;
}
signed main(){
cin>>n;
for (int i=1;i<=n;i++){
cin>>a[i].first>>a[i].second;
}
int ans;
int l=1,r=1000000,mid;
while (l<=r) {
d.init(n);
mid=(l+r)/2;
if (check(mid)){
ans=mid;
r=mid-1;
}
else l=mid+1;
}
cout<<ans;
return 0;
}
自己目前发现是check的问题,别的地方没有问题,真的不理解