#include <cstdio> #include <iostream> #include <algorithm> #include <cmath> #include <limits> using namespace std; int fa[1010]; int find(int x) { if(fa[x]==x)return x; return fa[x]=find(fa[x]); } typedef struct node{//点 float x; float y; // float len; }N; typedef struct edge{//边 int a,b; float len=0; }E; N no[110]; bool cmp(E e1,E e2) { return e1.len<e2.len; } int main() { int n; cin>>n; for(int i=1;i<=n;i++) { cin>>no[i].x>>no[i].y; } for(int i=1;i<=n;i++)fa[i]=i; int len=0; int s =n*(n+1)/2+1; E e[s]; for(int i=1;i<n;i++) { for(int j=i+1;j<=n;j++) { e[len].a = i; e[len].b = j; float lenth = (no[i].x-no[j].x)*(no[i].x-no[j].x)+(no[i].y-no[j].y)*(no[i].y-no[j].y); e[len].len = sqrt(lenth);//求边的长度 len++; } } sort(e,e+len,cmp); int cnt=0; float ans=0; for(int i=0;i<len;i++) { int f1 = find(e[i].a); int f2 = find(e[i].b); if(f1!=f2) { fa[f1] = f2; // cout<<e[i].len<<endl; ans +=e[i].len; } if(cnt==n-1)break; } printf("%.2lf",ans); }