Luogu P1433 吃奶酪

https://www.luogu.com.cn/problem/P1433

#include<cmath>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
int n;
struct Point{
    double x,y;
}a[30];
double Ans=1000000000;
bool vis[30];
void dfs(int pre,int cnt,double Dist){
    if(Dist>Ans)return;
    if(cnt==n){
        Ans=min(Ans,Dist);
        return;
    }
    for(int i=1;i<=n;i++){
        if(!vis[i]){
            double road=sqrt((a[pre].x-a[i].x)*(a[pre].x-a[i].x)+(a[pre].y-a[i].y)*(a[pre].y-a[i].y));
            vis[i]=1;
            dfs(i,cnt+1,Dist+road);
            vis[i]=0;
        }
    }
}
int main(){
    cin>>n;
    a[0].x=0;
    a[0].y=0;
    for(int i=1;i<=n;i++)cin>>a[i].x>>a[i].y;
    dfs(0,0,0);
    printf("%.2f",Ans);
}

猜你喜欢

转载自www.cnblogs.com/KingBenQi/p/12301835.html