1 #include <bits/stdc++.h> 2 using namespace std; 3 #define _for(i,a,b) for(int i = (a);i < b;i ++) 4 typedef double db; 5 const int maxn = 20; 6 db rnt = 1<<30; 7 int n; 8 double x[maxn],y[maxn],dis[maxn][maxn]; 9 10 double dfs(int s,db sum,int cur) 11 { 12 if(sum>rnt) 13 return 1<<30; 14 if(s==(1<<(n+1))-1) 15 rnt = min(rnt,sum); 16 17 _for(i,0,n+1) 18 if(!((1<<i)&s)) 19 { 20 s |= 1<<i; 21 dfs(s,sum+dis[cur][n-i],n-i); 22 s ^= 1<<i; 23 } 24 } 25 26 int main() 27 { 28 scanf("%d",&n); 29 _for(i,1,n+1) 30 scanf("%lf%lf",&x[i],&y[i]); 31 x[0]=0,y[0]=0; 32 _for(i,0,n+1) 33 _for(j,0,n+1) 34 dis[i][j]=sqrt((x[i]-x[j])*(x[i]-x[j])+(y[i]-y[j])*(y[i]-y[j])); 35 36 dfs(1<<n,0.0,0); 37 printf("%0.2f ",rnt); 38 return 0; 39 }