rt,求dalao调一下
#include <cstdio>
#include <cmath>
#include <algorithm>
using namespace std;
int n,s,cnt,flag;
double ans;
int xx[505],yy[505],f[505];
int find(int x)
{
if(x==f[x]) return x;
return f[x]=find(f[x]);
}
struct node{
int u,v;
double w;
};
double dis(int x1,int x2,int y1,int y2)
{
return sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
}
node q[250010];
void add(int from,int to,double dist)
{
cnt++;
q[cnt].u=from;
q[cnt].v=to;
q[cnt].w=dist;
}
int cmp(node a,node b)
{
return a.w<b.w;
}
void kru(){
sort(q+1,q+1+cnt,cmp);
for(int i=1;i<=n;i++)
{
int a=find(q[i].u),b=(q[i].v);
if(a!=b)
{
f[a]=b;
ans=q[i].w;
flag++;
if(flag==n-s) return ;
}
}
}
int main(){
scanf("%d%d",&s,&n);
for(int i=1;i<=n;i++)
scanf("%d%d",&xx[i],&yy[i]),f[i]=i;
for(int i=1;i<=n;i++)
for(int j=1;j<i;j++)
add(i,j,dis(xx[i],xx[j],yy[i],yy[j]));
kru();
printf("%.2lf",ans);
return 0;
}