什么鬼,10分?!
查看原帖
什么鬼,10分?!
658786
STUDENT00楼主2022/9/26 20:51

代码完全没问题(模板PRIM)

#include<bits/stdc++.h>
using namespace std;
int n;
long long x[5010],y[5010];
double mins[5010],ans;
bool vis[5010];
double s(long long x1,long long x2,long long y1,long long y2){
	return (double)sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
}
int main(){
	scanf("%d",&n);
	for(int i=1;i<=n;i++) scanf("%lld%lld",&x[i],&y[i]);
	for(int i=2;i<=n;i++) mins[i]=1e15;
	mins[0]=1e18;
	for(int i=1;i<=n;i++){
		int k=0;
		for(int j=1;j<=n;j++){
			if(!vis[j]&&mins[j]<mins[k]) k=j;
		}
		vis[i]=1;
		for(int j=1;j<=n;j++){
			if(!vis[j]){
				double p=(double)s(x[j],x[k],y[j],y[k]);
				if(p<mins[j]) mins[j]=p;
			}
		}
	}
	for(int i=1;i<=n;i++) ans+=mins[i];
	printf("%.2lf",ans);
	return 0;
}
2022/9/26 20:51
加载中...