#include<bits/stdc++.h>
#define uf(x,y,z) for(int x=y;x<=z;x++)
#define df(x,y,z) for(int x=y;x>=z;x--)
#define int long long
using namespace std;
int n,c,x[2010],y[2010],f[2010],cnt,t,sum;
struct node
{
int t,x,y;
} a[4000010];
int cmp(node a,node b)
{
return a.t<b.t;
}
int find(int x)
{
if(x==f[x])return x;
else f[x]=find(f[x]);
}
int s(int x1,int x2,int y1,int y2)
{
return (x1-x2)*(x1,x2)+(y1-y2)*(y1-y2);
}
signed main()
{
cin>>n>>c;
uf(i,1,n)scanf("%d%d",&x[i],&y[i]);
uf(i,1,n-1)
{
uf(j,i+1,n)
{
if(s(x[i],x[j],y[i],y[j])>=c)
{
cnt++;
a[cnt].x=i;
a[cnt].y=j;
a[cnt].t=s(x[i],x[j],y[i],y[j]);
}
}
}
sort(a+1,a+cnt+1,cmp);
uf(i,1,n)f[i]=i;
uf(i,1,cnt)
{
if(find(a[i].x)!=find(a[i].y))
{
sum+=a[i].t;
t++;
}
if(t==n-1)
{
cout<<sum<<endl;
return 0;
}
}
cout<<-1<<endl;
return 0;
}
哪里错了