90分求助
  • 板块P1433 吃奶酪
  • 楼主FFFTTTHHH
  • 当前回复8
  • 已保存回复8
  • 发布时间2022/7/27 09:56
  • 上次更新2023/10/27 18:12:59
查看原帖
90分求助
755205
FFFTTTHHH楼主2022/7/27 09:56

用的dfs+剪枝,然后超时```

#include <bits/stdc++.h>
using namespace std;
int n;
double dx[21],dy[21];
int ct;
double dis=0x3f3f3f3f;
bool vis[21];
double ans;
void dfs(double x,double y,double s){
    
	if(s>dis)
    return;
    if(ct==n){
        dis=min(dis,s);
        return;
    }
    for(int i=0;i<n;i++){
        if(!vis[i]){
        vis[i]=1;
        ct++;
        ans=sqrt((dx[i]-x)*(dx[i]-x)+(dy[i]-y)*(dy[i]-y));
        dfs(dx[i],dy[i],s+ans);
        vis[i]=0;
        ct--;
        }
    }
}
int main(){
    scanf("%d",&n);
    for(int i=0;i<n;i++)
        scanf("%lf%lf",&dx[i],&dy[i]);
            dfs(0,0,0);
            printf("%.2f",dis);
}
2022/7/27 09:56
加载中...