求助各位大佬们~样例错了
查看原帖
求助各位大佬们~样例错了
1359067
saam楼主2025/1/23 11:31
#include <bits/stdc++.h>
#define int long long
using namespace std;
const int maxn=5e3+5;
int x[maxn],y[maxn],n,k;
double len(int i,int j) {
	return 1.0*sqrt((x[i]-x[j])*(x[i]-x[j])+(y[i]-y[j])*(y[i]-y[j]));
}
bool vis[maxn];
double dis[maxn],ans;
vector<double> e;
void prim(int n) {
	for(int i=1;i<=n;++i) dis[i]=1e9;
	dis[1]=0;
	for(int i=1;i<=n;++i) {
		int u=-1;
		for(int v=1;v<=n;++v)
			if(!vis[v]&&(u==-1||dis[v]<dis[u])) u=v;
		e.push_back(dis[u]);
		vis[u]=true;
		for(int v=1;v<=n;++v)
			if(!vis[v]) dis[v]=min(dis[v],len(u,v));
	}
}
signed main() {
	cin >> k >> n;
	for(int i=1;i<=n;++i) cin >> x[i] >> y[i];
	prim(n);
	sort(e.begin(),e.end());
	for(int i=0;i<n-(k-1);++i) ans+=e[i]*1.0;
	cout << fixed << setprecision(2) << ans;
	return 0;
}
2025/1/23 11:31
加载中...