格式怎么贴成这鸟样了..
#include <iostream>
#include <cstdio>
#include <cstring>
#include <set>
using namespace std;
double x[1000],y[1000],z[1000];
double d[1000][1000];
int root[1000];
inline double sqr(double x) { return x*x; }
int f(int x) { return root[x]==x?x:root[x]=f(root[x]); }
void u(int x, int y) { root[f(x)] = root[f(y)]; }
int main()
{
int n,k;
cin>>n>>k;
for(int i=0;i<n;i++)
cin>>x[i]>>y[i]>>z[i];
for(int i=0;i<n;i++)
for(int j=i+1;j<n;j++)
d[i][j] = sqr(x[i]-x[j])+sqr(y[i]-y[j])+sqr(z[i]-z[j]);
double l = 0, r = 1.0+1e-5;
while(r-l>1e-7)
{
double mid = (l+r)/2;
for(int i=0;i<n;i++) root[i] = i;
for(int i=0;i<n;i++)
for(int j=i+1;j<n;j++)
if (d[i][j]<=mid) u(i,j);
set<int> s;
for(int i=0;i<n;i++) s.insert(f(i));
if (s.size()>=k) l=mid; else r=mid;
}
if (l>1.0) l = 1.0;
printf("%.6f\n",l);
return 0;
}