40分求助
查看原帖
40分求助
223333
propitious楼主2024/2/26 22:50
#include<bits/stdc++.h>
using namespace std;
int n,x[16],y[16],z[16],temp,tem;
double dis(int a,int b) 
{
	return sqrt((x[a]-x[b])*(x[a]-x[b])+(y[a]-y[b])*(y[a]-y[b]));
}

int main()
{
	double minx=999.0,ans;
	cin>>n;
	x[0]=y[0]=0;
	for(int i=1;i<=n;i++)
	{
		cin>>x[i]>>y[i];
		if(dis(i,0)<minx){
			minx=dis(i,0);
			temp=i;
		}
	}
    memset(z,0,sizeof(z));
    z[temp]=1;
    ans+=dis(temp,0);
    int j=1;
    while(j<n)
    {
    	minx=999.0;
    	for(int i=1;i<=n;i++)
    	if(dis(i,temp)<minx){
    		if(z[i]==1) continue;
			minx=dis(i,temp);
			tem=i;
		}
		temp=tem;
		z[temp]=1;
		ans+=minx;
		j++;
	}
	printf("%.2lf",ans);
}
2024/2/26 22:50
加载中...