有个疑问
查看原帖
有个疑问
1610290
no_response楼主2025/7/27 10:14
#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;
}

为什么我在第 4242 行加了个 1e9- 1e9 就AC了呢

2025/7/27 10:14
加载中...