#include <bits/stdc++.h>
using namespace std;
double mi=2e9,x[10001],y[100001],f[10001],sss;
double ff[1001][1001];
int n,i,j;
void sc(int xx,int yy,double jl){
int i,s=0;
double w;
sss++;
if(sss>=15000000){
printf("%.2f",mi);
exit(0);
}
if(xx>n){
mi=min(mi,jl);
return ;
}
for(i=1;i<=n;i++)
if(f[i]==0){
if(jl+ff[yy][i]>=mi) continue;
f[i]=1;
sc(xx+1,i,jl+ff[yy][i]);
f[i]=0;
}
return ;
}
int main(){
// ios::sync_with_stdio(0);
// cin.tie(0);cout.tie(0);
cin>>n;
for(i=1;i<=n;i++) cin>>x[i]>>y[i];
for(i=0;i<=n;i++)
for(j=0;j<=n;j++)
ff[i][j]=sqrt((x[i]-x[j])*(x[i]-x[j])+(y[i]-y[j])*(y[i]-y[j]));
sc(1,0,0);
printf("%.2f",mi);
}
Hack 数据错了两个点(WA)
…………
哪位大佬来看看~~