大佬帮忙看看吧,5个TLE
查看原帖
大佬帮忙看看吧,5个TLE
475143
gaojian2007楼主2021/8/9 17:09
#include <cstdio>
#include <cmath>
using namespace std;
double n,x[20],y[20],b[20]={},nx=0,ny=0,t[20][20];
double s=0,ns=1000000000;
int c[20]={},d;
void dfs(int a)
{
	if(a==n+1)
	{
		ns=min(s,ns);
		return ;
	}
	for(int i=1;i<=n;i++)
	{
		if(!b[i])
		{
			b[i]=1;
			s+=t[c[a-1]][i];
			c[a]=i;
			dfs(a+1);
			s-=t[c[a-1]][i];
			b[i]=0;
		}
	}
}
int main()
{
	scanf("%lf",&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++)
	{
		t[i][j]=sqrt(pow(x[i]-x[j],2)+pow(y[i]-y[j],2));
	}
	dfs(1);
	printf("%0.2lf",ns);
	return 0;
} ```
2021/8/9 17:09
加载中...