#include <bits/stdc++.h>
using namespace std;
int pos[5010][5];
double dis[5010];
int vis[5010];
double dist(double x1, double y1, double x2, double y2) {
return sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2));
}
int main() {
int n;
cin >> n;
for (int i = 1; i <= n; i++) {
cin >> pos[i][0] >> pos[i][1];
}
dis[1] = 0, vis[1] = 1;
int nxt = 0, now = 0;
double minn = 1e9, ans = 0;
for (int i = 2; i <= n; i++) {
dis[i] = dist(pos[1][0], pos[1][1], pos[i][0], pos[i][1]);
if (dis[i] < minn) {
minn = dis[i];
nxt = i;
}
}
ans += minn;
for (int i = 2; i <= n; i++) {
vis[nxt] = 1;
now = nxt;
minn = 1e9;
for (int j = 1; j <= n; j++) {
if (vis[j] == 1) {
continue;
}
dis[j] = min(dis[j], dist(pos[now][0], pos[now][1], pos[j][0], pos[j][1]));
if (dis[j] < minn) {
minn = dis[j];
nxt = j;
}
}
ans += minn;
}
printf("%.2lf", ans - 1e9);
return 0;
}
为什么我在第 42 行加了个 −1e9 就AC了呢