#include <cstdio>
#include <algorithm>
#include <cmath>
using namespace std;
double sqr(double x){return x*x;}
int n; bool v[16]; double s,ans=1e17-1,f[16][16],x[16],y[16];
void dfs(int now,int dep){
if (dep==n) ans=min(ans,s);
if (dep==n||s>ans) return;//大过最小值肯定不行
v[now]=1;
for (int i=1;i<=n;i++){
if (!v[i]){
s+=f[now][i];
dfs(i,dep+1);
s-=f[now][i];
}
}
v[now]=0;
}
int main(){
scanf("%d",&n);
for (int i=1;i<=n;i++) scanf("%lf%lf",&x[i],&y[i]);
for (int i=0;i<=n;i++)
for (int j=0;j<=n;j++)
f[i][j]=sqrt(sqr(x[i]-x[j])+sqr(y[i]-y[j]));//勾股预处理
dfs(0,0);
printf("%.2lf",ans);
return 0;
}
#深搜#洛谷 1433 吃奶酪
最新推荐文章于 2021-02-02 01:51:28 发布