#include #include #include #include using namespace std; const int maxn=105; const double inf=0x3f3f3f3f;//类型double double m[maxn][maxn],low[maxn]; bool vis[maxn]; int n; struct cell { double x,y,z,r;//球形单元的圆心,半径 }c[maxn]; double clu(cell c1,cell c2)//计算两个球单元的距离 { double x=(c1.x-c2.x)*(c1.x-c2.x); double y=(c1.y-c2.y)*(c1.y-c2.y); double z=(c1.z-c2.z)*(c1.z-c2.z); double d=sqrt(x+y+z); if(d-c1.r-c2.r<=0) return 0.000; else return d-c1.r-c2.r; } double prim(int s)//返回值类型double { for(int i=0;im[t][j]) low[j]=m[t][j]; } } return sum; } int main() { while(cin>>n&&n) { //memset(m,0x3f,sizeof(m));//不可以对浮点数赋值,只能是0,-1,整数 for(int i=0;i>c[i].x>>c[i].y>>c[i].z>>c[i].r; for(int i=0;i