社区讨论

100求条(不用状压)

P1433吃奶酪参与者 2已保存回复 1

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
1 条
当前快照
1 份
快照标识符
@mkm56uas
此快照首次捕获于
2026/01/20 13:17
4 周前
此快照最后确认于
2026/01/23 21:30
4 周前
查看原帖
CPP
#include<bits/stdc++.h>
using namespace std;
#define rep(i,a,b) for(int i = a;i <= b;i++)
#define per(i,a,b) for(int i = a;i >= b;i--)
struct cheese
{
	double x,y;
	void read()
	{
		cin>>x>>y;
	}
}a[20];
int cnt=0;
double dist[20][20];
bool vis[20];
double ans=1e6;
int n;
void dfs(int step,int now,double sum)
{
    cnt++;
    if(cnt>=10000000)
    {
        printf("%.2f",ans);
        exit(0);
    }
	if(step>n)
	{
		if(sum<ans)
			ans=sum;
		return;
	}
	rep(i,1,n)
	{
		if(!vis[i]&&i!=now)
		{
			if(sum+dist[i][now]>=ans)continue;
			vis[i]=1;
			dfs(step+1,i,sum+dist[i][now]);
			vis[i]=0;
		}
	}
}

int main()
{
    ios::sync_with_stdio(0);
    cin>>n;
    rep(i,1,n)
		a[i].read();
    a[0].x=0;
    a[0].y=0;
	rep(i,0,n)
		rep(j,0,n)
			dist[i][j]=sqrt((a[i].x-a[j].x)*(a[i].x-a[j].x)+(a[i].y-a[j].y)*(a[i].y-a[j].y));
	vis[0]=1;
    dfs(1,0,0);
    printf("%.2f",ans);
    return 0;
}

回复

1 条回复,欢迎继续交流。

正在加载回复...