//prim最小生成树直接prim算法,写了这么多了还是没背下来啊 ……#//prim
#include<stdio.h>
#include<math.h>
#include<string.h>
#include<stdlib.h>
#define Max 110
#define inf 100000000
float map[Max][Max],d[Max],point[Max][2],sum;
int used[Max],n;
float dis(float a,float b,float c,float d)
{
return sqrt((c-a)*(c-a)+(d-b)*(d-b));
}
void prim()
{
int i,j,k;
float min;
for(i=1;i<=n;i++)
d[i]=map[1][i];
used[1]=1;
for(i=1;i<n;i++)
{
min=inf;
for(j=2;j<=n;j++)
{
if(!used[j]&&min>d[j])
{
min=d[j];
k=j;
}
}
if(min==inf)
return ;
sum+=min;
used[k]=1;
for(j=2;j<=n;j++)
{
if(!used[j]&&d[j]>map[j][k])
d[j]=map[j][k];
}
}
printf("%.2f/n",sum);
}
int main()
{
int i,j;
scanf("%d",&n);
for(i=1;i<=n;i++)
scanf("%f%f",&point[i][0],&point[i][1]);
// memset(map,inf,sizeof(map));
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
{
if(i==j)
map[i][j]=inf;
else
map[i][j]=map[j][i]=dis(point[i][0],point[i][1],point[j][0],point[j][1]);
}
}
sum=0.0;
memset(used,0,sizeof(used));
prim();
return 0;
}