http://poj.org/problem?id=2031
//* @author: 82638882@163.com
import java.io.*;
import java.util.Arrays;
public class Main
{
static int[] p;
public static void main(String[] args) throws NumberFormatException, IOException
{
InputStreamReader is=new InputStreamReader(System.in);
BufferedReader in=new BufferedReader(is);
while(true)
{
int a=Integer.parseInt(in.readLine());
if(a==0)break;
double[][] dd=new double[a][4];
for(int i=0;i< a;i++)
{
String[] ss=in.readLine().split(" ");
for(int j=0;j< 4;j++)
dd[i][j]=Double.parseDouble(ss[j]);
}
p=new int[a];
for(int i=0;i< a;i++)
p[i]=i;
rir[] yy=new rir[7000];
int len=0;
for(int i=0;i< a;i++)
for(int j=i+1;j< a;j++)
{
if(i==j) continue;
double dis=(dd[i][0]-dd[j][0])*(dd[i][0]-dd[j][0])+
(dd[i][1]-dd[j][1])*(dd[i][1]-dd[j][1])+
(dd[i][2]-dd[j][2])*(dd[i][2]-dd[j][2]);
dis=Math.sqrt(dis);
dis-=dd[i][3];
dis-=dd[j][3];
if(dis< 0) dis=0;
yy[len]=new rir(i,j,dis);
len++;
}
Arrays.sort(yy,0,a*(a-1)/2);
//for(int i=0;i< a*(a-1)/2;i++)
//System.out.println(yy[i].juli+" "+yy[i].x+" "+yy[i].y);
double sum=0;
for(int i=0;i< len;i++)
{
if(un(yy[i].x,yy[i].y))
{
sum+=yy[i].juli;
}
}
System.out.printf("%.3fn",sum);
}
}
static int root(int x)
{
int b=x;
while(p[b]!=b)
b=p[b];
return p[x]=b;
}
static boolean un(int a,int b)
{
int aa=root(a);
int bb=root(b);
if(aa==bb)return false;
if(aa>bb)
p[aa]=bb;
else p[bb]=aa;
return true;
}
}
class rir implements Comparable< rir>
{
int x;
int y;
double juli;
public rir(int xx,int yy,double j)
{
x=xx;y=yy;juli=j;
}
@Override
public int compareTo(rir o) {
if(juli-o.juli< 0)return -1;
if(juli==o.juli)return 0;
else return 1;
}
}
Meta
-
Recent Posts
Recent Comments
Archives
- May 2024
- April 2023
- February 2023
- January 2023
- December 2022
- November 2022
- September 2022
- June 2022
- July 2021
- January 2021
- February 2020
- September 2019
- March 2018
- February 2018
- August 2016
- July 2016
- June 2016
- May 2016
- April 2016
- March 2016
- February 2016
- January 2016
- December 2015
- November 2015
- October 2015
- September 2015
- August 2015
- July 2015
- June 2015
- May 2015
- April 2015
- March 2015
- February 2015
- January 2015
- December 2014
- November 2014
- October 2014
- September 2014
- August 2014
- July 2014
- June 2014
- May 2014
- April 2014
- March 2014
- February 2014
- January 2014
- December 2013
- November 2013
- October 2013
- September 2013
- August 2013
- July 2013
- June 2013
- May 2013
- April 2013
- March 2013
- February 2013
- January 2013
- December 2012
- November 2012
- October 2012
- September 2012
- August 2012
- July 2012
- June 2012
- May 2012
- April 2012
- March 2012
- February 2012
- January 2012
- December 2011
- November 2011
- October 2011
- September 2011
- August 2011
- July 2011
- June 2011
- May 2011
- April 2011
- March 2011
- February 2011
- January 2011
- December 2010
- November 2010
- October 2010
- September 2010
- August 2010
- July 2010
- June 2010
- May 2010
- April 2010
- March 2010
- February 2010
- January 2010
- December 2009
- November 2009
- October 2009
- September 2009
- August 2009
- July 2009
- June 2009
- May 2009
- April 2009
- March 2009
- February 2009
Categories
