70 points WA 3
#include<bits/stdc++.h>
#define ll long long
#define maxn 2005
#define ld long double
using namespace std;
ll read(){
ll f=1,k=0;
char c=0;
while(c<'0'||c>'9'){
if(c=='-')f=-1;
c=getchar();
}
while(c>='0'&&c<='9'){
k=k*10+c-'0';
c=getchar();
}
return k*f;
}
void out(ll x){
if(x<0){
x=-x;
putchar('-');
}
if(x>=10)out(x/10);
putchar(x%10+'0');
}
struct node{
ll s,e;
ld l;
}road[maxn*maxn];
ll n,k,cx[maxn],cy[maxn],cnt,fa[maxn],cntk;
ld dist(ll x,ll y,ll xx,ll yy){
return sqrt(int(x-xx)*(x-xx)+(y-yy)*(y-yy));
}
bool cmp(node a,node b){
return(a.l<b.l);
}
ll findfa(ll x){
if(fa[x]==x)return x;
return fa[x]=findfa(fa[x]);
}
int main(){
// freopen("a.in","r",stdin);
n=read();k=read();
cntk=n;
for(ll i=1;i<=n;i++){
cx[i]=read();cy[i]=read();
fa[i]=i;
for(ll j=1;j<n;j++){
cnt++;
road[cnt].s=i;
road[cnt].e=j;
road[cnt].l=dist(cx[i],cy[i],cx[j],cy[j]);
}
}
sort(road+1,road+cnt+1,cmp);
for(ll i=1;i<=cnt;i++){
ll s=road[i].s,e=road[i].e;
ld l=road[i].l;
if(findfa(s)==findfa(e))continue;
if(cntk<=k){
printf("%0.2Lf\n",l);
return 0;
}
fa[findfa(e)]=findfa(s);
cntk--;
}
// cout<<cntk;
return 0;
}
Thank you