include[HTML_REMOVED]
using namespace std;
int n,k,a[1005],b[1005],p[1005],cnt=0,res=0;
double ans=100000010,t[1005][1005];
int find(int x)
{
if(p[x]!=x) p[x]=find(p[x]);
return p[x];
}
struct edge{
int a,b;
double w;
bool operator < (edge &t) const
{
return w[HTML_REMOVED]>n>>k;
memset(t,127,sizeof(t));
for(int i=1;i<=n;i) cin>>a[i]>>b[i];
for(int i=1;i<n;i)
for(int j=i+1;j<=n;j)
e[cnt].a=i,e[cnt].b=j,e[cnt].w=sqrt(pow(a[i]-a[j],2)+pow(b[i]-b[j],2));
sort(e+1,e+cnt+1);
for(int i=1;i<=n;i) p[i]=i;
for(int i=1;i<=cnt;i)
{
int ta=find(e[i].a),tb=find(e[i].b);
if(ta!=tb)
{
p[ta]=tb;
res;
}
if(res==n-k) break;
}
for(int i=1;i<=n;i)
for(int j=1;j<=n;j)
if(find(i)!=find(j))
{
t[find(i)][find(j)]=min(t[find(i)][find(j)],sqrt(pow(a[i]-a[j],2)+pow(b[i]-b[j],2)));
}
for(int i=1;i<=n;i)
for(int j=1;j<=n;j++)
ans=min(t[find(i)][find(j)],ans);
printf(“%.2lf”,ans);
return 0;
}