图论算法 填充管道

来源:互联网 发布:mac不能恢复单一分区 编辑:程序博客网 时间:2024/05/19 12:37

 

package com.example.java;import java.util.Scanner;public class MiniMumSpanningTree {/** * @param args */static double f[][] = new double[20][2];static double value[][] = new double[20][20];static int fa[] = new int[20];static int n;static int sum = 1;static double a = 0;public static void main(String[] args) {// TODO Auto-generated method stubScanner scan = new Scanner(System.in);n = scan.nextInt();for (int i = 0; i < n; i++) {f[i][0] = scan.nextDouble();f[i][1] = scan.nextDouble();fa[i] = i;}for (int i = 0; i < n; i++) {for (int j = i + 1; j < n; j++) {value[i][j] = value[j][i] = Math.sqrt((f[i][0] - f[j][0])* (f[i][0] - f[j][0]) + (f[i][1] - f[j][1])* (f[i][1] - f[j][1]));}}while (sum < n) {sum++;int x = 0, y = 0, i, j;double v = Double.MAX_VALUE;for (i = 0; i < n; i++) {for (j = i + 1; j < n; j++) {if (v > value[i][j] && fa[i] != fa[j]) {x = i;y = j;v = value[i][j];}}}for (i = 0; i < n; i++) {if (fa[i] == fa[y]) {fa[i] = fa[x];}}a = a + v;}System.out.println(String.format("%.2f", a));}}


 

0 0
原创粉丝点击