#include<bits/stdc++.h>
using namespace std;
long long n;
long double minn=1e9,sum;
long double px[20],py[20];
bool pn[20];
void dfs(int s,int t){
long double x=px[t],y=py[t];
if(s>n){
minn=min(minn,sum);
return;
}
for(int i=1;i<=n;i++){
if(pn[i])continue;
long double dis=sqrt((x-px[i])*(x-px[i])+(y-py[i])*(y-py[i]));
if(sum+dis>minn){
return;
}
sum+=dis;
pn[i]=true;
dfs(s+1,i);
sum-=dis;
pn[i]=false;
}
return;
}
int main(){
cin>>n;
for(int i=1;i<=n;i++)cin>>px[i]>>py[i];
dfs(1,0);
cout<<fixed<<setprecision(2)<<minn<<endl;
return 0;
}
最后一个点TLE了