rt,代码如下
#include<bits/stdc++.h>
using namespace std;
int n;
long long e[5005][5005];
double dist[5005];
int f[5005];
int a[5005][4];
double prim(){
int k=1;
f[1]=1;
double s=0;
for(int i=1;i<=n;i++){
dist[i]=1e18;
}
for(int j=1;j<=n-1;j++){
for(int i=1;i<=n;i++){
if(dist[i]==1e18){
dist[i]=sqrt(e[k][i]);
}else{
dist[i]=min(dist[i],sqrt(e[k][i]));
}
}
double minn=1e18;
for(int i=1;i<=n;i++){
if(f[i]==0&&dist[i]<minn){
minn=dist[i];
k=i;
}
}
s+=minn;
f[k]=1;
}
return s;
}
int main(){
cin>>n;
int x,y;
for(int i=1;i<=n;i++){
// cin>>a[i][0]>>a[i][1];
scanf("%lld%lld",&a[i][0],&a[i][1]);
}
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
e[i][j]=pow(a[i][0]-a[j][0],2)+pow(a[i][1]-a[j][1],2);
e[j][i]=e[i][j];
}
}
double ans=prim();
printf("%.2lf",ans);
return 0;
}