求助
查看原帖
求助
276588
lonely_cyx楼主2023/9/2 10:56
#include<bits/stdc++.h>
using namespace std;
int fa[1000010];
int n,m;
struct line
{
	int x,y;
}qnum[1000010];
struct node
{
	int x,y;
	double z;
}edge[1000010];
double maxn;
int x[100010],y[1000010];
int find(int x)
{
	if(fa[x]!=x)
	{
		return fa[x]=find(fa[x]);
	}
	return x;
}
bool cmp(node a,node b)
{
	return a.z<b.z;
}
int num=0;
double wtf()
{
	double dis=0;
	int qum=0;
	for(int i=1;i<=n;i++)
		fa[i]=i;
	sort(edge+1,edge+num+1,cmp);
	for(int i=1;i<=num;i++)
	{
		int fx=find(edge[i].x);
		int fy=find(edge[i].y);
		if(fx!=fy)
		{
			fa[fx]=fy;
			dis+=edge[i].z;
			qum++;
			maxn=edge[i].z;
			if(qum==n-m)
				return maxn;
		}
	}
	return -1;
}
int main()
{
	cin>>n>>m;
	for(int i=1;i<=n;i++)
	{
		cin>>qnum[i].x>>qnum[i].y;
	}
	for(int i=1;i<=n;i++)
		for(int j=i+1;j<=n;j++)
		{
			num++;
			edge[num].x=i,edge[num].y=j;
			edge[num].z=sqrt((double)(qnum[i].x-qnum[j].x)*(double)(qnum[i].x-qnum[j].x)+(double)(qnum[i].y-qnum[j].y)*(double)(qnum[i].y-qnum[j].y));
		}
	printf("%.2lf",wtf());
	return 0;
}
2023/9/2 10:56
加载中...