代码,过不了hack
#include<bits/stdc++.h>
using namespace std;
const int maxn=2e7;
int n;
int cnt;
double x[16],y[16],dist[16][16];
bool vis[16];
double ans=1e6+5;
void dfs(int dep,int now,double sum){
cnt++;
if(cnt>=maxn){
printf("%.2lf",ans);
exit(0);
}
if(dep>n){
if(sum<ans) ans=sum;
return ;
}
for(int i=1;i<=n;i++){
if(!vis[i]){
double t=sum+dist[now][i];
if(t>=ans) continue;
vis[i]=1;
dfs(dep+1,i,t);
vis[i]=0;
}
}
}
int main(){
//freopen("P1433_10.in","r",stdin);
scanf("%d",&n);
x[0]=0;y[0]=0;
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++){
dist[i][j]=sqrt((x[i]-x[j])*(x[i]-x[j])+(y[i]-y[j])*(y[i]-y[j]));
}
}
dfs(1,0,0);
printf("%.2lf",ans);
return 0;
}
能优化过去吗?