```
#include <iostream>
#include <string>
#include <cstring>
#include <algorithm>
#include <queue>
typedef long long LL;
using namespace std;
const int N = 5e3+10;
vector<pair<int, int> > g[N];
int dis[N];
bool vis[N];
int x[N],y[N];
int main() {
int n,c;
cin>>n>>c;
for(int i=1;i<=n;i++){
cin>>x[i]>>y[i];
for(int j=1;j<i;j++){
int d = (x[i]-x[j])*(x[i]-x[j]) + (y[i]-y[j])*(y[i]-y[j]);
if(d<c) continue;
g[i].push_back({j,d});
g[j].push_back({i,d});
}
}
int ans = 0;
memset(dis,0x3f,sizeof(dis));
dis[1] = 0;
for(int k=1;k<=n;k++){
int u = 0, minn = 1e9;
for(int i=1;i<=n;i++){
if(vis[i]==0&&dis[i]<minn){
u = i;
minn = dis[i];
}
}
if(u==0){
cout<<-1<<endl;
return 0;
}
vis[u] = 1;
ans += dis[u];
for(auto t : g[u]){
int v = t.first, w = t.second;
if(vis[v]==0){
dis[v] = min(dis[v],w);
}
}
}
cout<<ans<<endl;
return 0;
}
```
by wininaction @ 2022-04-09 19:47:47