不知怎解
  • 板块P1433 吃奶酪
  • 楼主ENTERIT
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/2/28 21:05
  • 上次更新2024/2/28 22:51:10
查看原帖
不知怎解
970670
ENTERIT楼主2024/2/28 21:05
#include<bits/stdc++.h>
using namespace std;
int n;
struct p
{
	double x;
	double y;
	bool vis;
}a[20];
double ans = 10000000000000000.00;
double d(double x1, double y1, double x2, double y2)
{
	double v = sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
	return v;
}
void dfs(double x, double y, double dx, int k)
{
	if(k > n)
	{
		ans = min(ans, dx);
		return ;
	}
	for(int i = 1; i <= n; i++)
	{
		a[k].vis = true;
		if(a[i].vis || dx+d(a[k].x, a[k].y, a[i].x, a[i].y) <= ans) continue;
		dfs(a[i].x, a[i].y ,dx+d(a[k].x, a[k].y, a[i].x, a[i].y), i);
		a[k].vis = false;
	}
}
int main()
{
	scanf("%d", &n);
	for(int i = 1; i <= n; i++)
	{
		scanf("%lf%lf", &a[i].x, &a[i].y);
	}
	dfs(0, 0, 0, 0);
	printf("%.2f", ans);
	return 0;
}
2024/2/28 21:05
加载中...