hdu 1162 Eddy's picture<java><prime>

来源:互联网 发布:郑州seo 编辑:程序博客网 时间:2024/06/06 07:52

http://acm.hdu.edu.cn/showproblem.php?pid=1162

题目算法备注给出坐标,求连接坐标的最小生成树prime 最小生成树    

import java.util.Scanner;  public class Main {  public static void main(String[] args) { int n,i,j; Scanner oo=new Scanner(System.in); while(oo.hasNext()){ n=oo.nextInt(); double x[]=new double[n+1]; double y[]=new double[n+1]; double a[][]=new double[n+1][n+1]; for(i=1;i<=n;i++){ x[i]=oo.nextDouble(); y[i]=oo.nextDouble(); } for(i=1;i<=n;i++){ for(j=i+1;j<=n;j++){ a[i][j]=Math.hypot(y[j]-y[i], x[j]-x[i]); a[j][i]=a[i][j]; } } double d[]=new double[n+1]; for(i=1;i<=n;i++){ d[i]=a[1][i]; } boolean f[]=new boolean[n+1]; double min=200000000,tree=0; int u=0; for(i=0;i<n;i++){ min=2000000000; for(j=1;j<=n;j++){ if(f[j]==false&&d[j]<min){ min=d[j]; u=j;       } } tree=tree+min; f[u]=true; for(j=1;j<=n;j++){ if(f[j]==false&&a[u][j]<d[j]){ d[j]=a[u][j]; } } } System.out.printf("%.2f",tree); System.out.println(); }  }  }


原创粉丝点击