搜索:
#include <bits/stdc++.h>
using namespace std;
struct point
{
double x, y;
}a[20];
int n, k;
double ans = 2e9;
bool vis[114];
void dfs(int cur, double all, double x, double y)
{
if(all > ans)
return ;
if(cur == k + 1)
{
ans = min(ans, all);
return ;
}
for(int i = 1; i <= n; i++)
{
if(vis[i] == 0)
{
vis[i] = 1;
dfs(cur + 1, all + sqrt((abs(x - a[i].x) * abs(x - a[i].x)) + (abs(y - a[i].y) * abs(y - a[i].y))), a[i].x, a[i].y);
vis[i] = 0;
}
}
}
int main()
{
cin >> n >> k;
for(int i = 1; i <= n; i++)
cin >> a[i].x >> a[i].y;
dfs(1, 0.00, 0.00, 0.00);
printf("%.2lf", ans);
return 0;
}