1 #include <bits/stdc++.h>
2 using namespace std;
3
4 const int maxn=1000+5;
5 int n,k;
6 int f[maxn];
7 struct node{ int x,y; }a[maxn];
8 struct edge{
9 int x,y,w;
10 edge(){}
11 edge(int x,int y,int w):x(x),y(y),w(w){}
12 bool operator < (const edge &a)const { return w<a.w; }
13 }e[maxn*maxn];
14 inline int find(int x){ return x==f[x]?f[x]:f[x]=find(f[x]); }
15 inline int dis(node a,node b){ return pow(a.x-b.x,2)+pow(a.y-b.y,2); }
16 int main(){
17 scanf("%d%d",&n,&k);
18 for(int i=1;i<=n;i++) f[i]=i;
19 for(int i=1;i<=n;i++) scanf("%d%d",&a[i].x,&a[i].y);
20 int cnt=0;
21 for(int i=1;i<=n;i++)for(int j=i+1;j<=n;j++) e[++cnt]=edge(i,j,dis(a[i],a[j]));
22 sort(e+1,e+cnt+1);
23 for(int i=1;i<=cnt;i++){
24 int fx=find(e[i].x),fy=find(e[i].y);
25 if(fx!=fy){
26 if(n>k) n--, f[fx]=fy;
27 else{
28 printf("%.2lf\n",sqrt(e[i].w));
29 break;
30 }
31 }
32 }
33 return 0;
34 }