萌新求助莫名其妙RE一个点
查看原帖
萌新求助莫名其妙RE一个点
383667
zhaotianle123楼主2020/10/20 14:31

RT 代码:

#include<iostream>
#include<cstdio>
#include<cmath>
#include <algorithm>
using namespace std;
int n,m,p[1310],ans=-1,cnt,x[1310],y[1310],k;
void make_set(int x)
{
	p[x]=x;
}
int find(int x)
{
	if(x!=p[x])p[x]=find(p[x]);
	return p[x];
}
void union_set(int x,int y)
{
	p[y]=x;
}
struct Edge{
	int u,v;
	double w;
	bool operator < (const Edge& rhs) const
	{
		return w<rhs.w;
	} 
}e[150010];
void kr()
{
	sort(e+1,e+m+1);
	for(int i=1;i<=n;i++)make_set(i);
	for(int i=1;i<=m;i++)
	{
		int x=find(e[i].u),y=find(e[i].v);
		if(x!=y)
		{
			union_set(x,y);
			cnt++;
			if(cnt==n-k+1)
			{
				printf("%.2lf",e[i].w);
			}
		 } 
	}
}
int main()
{
	cin>>n>>k;
	for(int i=1;i<=n;i++)
	{
		cin>>x[i]>>y[i];
	}
	for(int i=1;i<=n;i++)
		for(int j=i+1;j<=n;j++)
		{
			 double s=sqrt((x[i]-x[j])*(x[i]-x[j])+(y[i]-y[j])*(y[i]-y[j]));
			 m++;
			 e[m].u=i,e[m].v=j,e[m].w=s;
		}
	kr();
}
2020/10/20 14:31
加载中...