#include<bits/stdc++.h>
using namespace std;
int r[501],lct[501][2];
struct node
{
double d;
int x,y;
}w[200000];
bool cmp(node p,node q)
{
return p.d<q.d;
}
int find(int a)
{
if(r[a]!=a)
return r[a]=find(r[a]);
return a;
}
int main()
{
int s,p,k=0,sum=0;
double ans;
freopen("a.in","r",stdin);
cin>>s>>p;
for(int i=1;i<=p;i++)
scanf("%d%d",&lct[i][0],&lct[i][1]),r[i]=i;
for(int i=1;i<=p;i++)
for(int j=i+1;j<=p;j++)
{
w[++k].x=i;
w[k].y=j;
w[k].d=sqrt((lct[i][0]-lct[j][0])*(lct[i][0]-lct[j][0])+(lct[i][1]-lct[j][1])*(lct[i][1]-lct[j][1]));
}
sort(w+1,w+k+1,cmp);
for(int i=1;i<=k;i++)
{
if(find(w[i].x)!=find(w[i].y))
{
sum++;
r[w[i].y]=r[w[i].x];
ans=w[i].d;
}
if(sum>=p-s)
{
printf("%.2lf",ans);
return 0;
}
}
return 0;
}
并查集做法