Eddy's picture

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1162

    ——每天在线,欢迎留言谈论。

题目大意:

给你N个点,求把这N个点连在一起的最短总距离。

思路:

假设每两两点之间都有路径,求最小生成树。

AC代码:(Java)

 import java.util.Scanner;
import java.math.*;
public class Main {
public static final int MAXN = 110;
public static double mp[][] = new double[MAXN][MAXN];
public static Point p[] = new Point[MAXN];
public static int n;
public static String answer = new String();
public static Scanner scn = new Scanner(System.in);
public static void main(String[] args){
for (int i = 0; i < MAXN; i++){
p[i] = new Point();
}
while (scn.hasNext()) {
n = scn.nextInt();
foundMap();
answer = String.format("%.2f", prim());
System.out.println(answer);
}
System.exit(0);
}
public static boolean foundMap() {
double x,y;
for (int i = 0; i < n; i++) {
x = scn.nextDouble();
y = scn.nextDouble();
p[i].setPoint(x, y);
}//Found points
for (int i = 0; i < n; i++)
for (int j = 0; j < n; j++)
if (i != j)
mp[i][j] = Point.getDistencs(p[i], p[j]);
//Found map
return true;
}
public static double prim() {
int tempI;
double tempClos;
double[] closEdge = new double[MAXN];
double sum = 0.0;
//Init closeEdge
closEdge[0] = 0.0;
for (int i = 1; i < n; i++) {
closEdge[i] = mp[0][i];
}
//Find n-1 edge
for (int i = 1; i < n; i++) {
tempI = -1;
tempClos = -1.0;
for (int j = 0; j < n; j++) {
if (closEdge[j] != 0.0 && (tempClos == -1.0 || closEdge[j] < tempClos)){
tempClos = closEdge[j];
tempI = j;
}
}
sum += tempClos;
closEdge[tempI] = 0;
for (int j = 0; j < n; j++) {
if (j != tempI && closEdge[j] > mp[tempI][j]) {
closEdge[j] = mp[tempI][j];
}
}
}
return sum;
}
}
class Point { //已下为一个点类 可以不看。
private double x;
private double y;
public Point(double x,double y) {
this.x = x;
this.y = y;
}
public Point() {
x = 0.0;
y = 0.0;
}
public void setPoint(double X,double Y) {
this.x = X;
this.y = Y;
}
public double getX() {
return x;
}
public double getY() {
return y;
}
public static double getDistencs(Point p1,Point p2) {
return Math.sqrt(Math.pow(p1.getX() - p2.getX(), 2.0) + Math.pow(p1.getY() - p2.getY(),2.0));
}
}

2017-07-23 13:07:39

HDU 1162 Eddy's picture (最小生成树)(java版)的更多相关文章

  1. hdu 1162 Eddy's picture(最小生成树算法)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1162 Eddy's picture Time Limit: 2000/1000 MS (Java/Ot ...

  2. hdu 1162 Eddy's picture (最小生成树)

    Eddy's picture Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)To ...

  3. hdu 1162 Eddy's picture (Kruskal 算法)

    题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=1162 Eddy's picture Time Limit: 2000/1000 MS (Java/Ot ...

  4. HDU 1162 Eddy's picture

    坐标之间的距离的方法,prim算法模板. Eddy's picture Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32 ...

  5. hdu 1162 Eddy's picture (prim)

    Eddy's pictureTime Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Tot ...

  6. HDU 1162 Eddy's picture (最小生成树 prim)

    题目链接 Problem Description Eddy begins to like painting pictures recently ,he is sure of himself to be ...

  7. HDU 1162 Eddy's picture (最小生成树 普里姆 )

    题目链接 Problem Description Eddy begins to like painting pictures recently ,he is sure of himself to be ...

  8. hdu 1162 Eddy's picture(最小生成树,基础)

    题目 #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include<string.h> #include <ma ...

  9. 题解报告:hdu 1162 Eddy's picture

    Problem Description Eddy begins to like painting pictures recently ,he is sure of himself to become ...

随机推荐

  1. 解决删除chrome注册表残留问题

    将下面这个全部复制下来并粘贴到命名为“remove.reg”的文件中.双击执行即可  Windows Registry Editor Version 5.00 ;WARNING, this file  ...

  2. Linux编程 23 shell编程(结构化条件判断 命令if -then , if-then ... elif-then ...else,if test)

    一.概述 在上一篇里讲到了shell脚本,shell按照命令在脚本中出现的顺序依次进行处理,对于顺序操作已经足够了,但许多程序要求对shell脚本中的命令加入一些逻辑流程控制,这样的命令通常叫做 结构 ...

  3. Homebrew简介和基本使用

    一.Homebrew是什么 Homebrew是一款Mac OS平台下的软件包管理工具,拥有安装.卸载.更新.查看.搜索等很多实用的功能.简单的一条指令,就可以实现包管理,而不用你关心各种依赖和文件路径 ...

  4. Spring cloud的Maven插件(一):repackage目标

    简介 Spring Boot Maven Plugin插件提供spring boot在maven中的支持.允许你打包可运行的jar包或war包. 插件提供了几个maven目标和Spring Boot ...

  5. eclipse导入的项目resource包被当做成文件夹

    项目中遇到的问题: 导出的项目(错误) 原本应该是这样的 需要这样设置一下: 1  2 最后就变回来了!

  6. Java中的Interrupt使用

    初心 用interrupt中断程序 初步实现 public class InterruptionInJava implements Runnable{ @Override public void ru ...

  7. spring学习(三) ———— spring事务操作

    前面一篇博文讲解了什么是AOP.学会了写AOP的实现,但是并没有实际运用起来,这一篇博文就算是对AOP技术应用的进阶把,重点是事务的处理. --wh 一.jdbcTemplate 什么是JdbcTem ...

  8. spring学习(一) ———— IOC讲解

    spring基本就两个核心内容,IOC和AOP.把这两个学会了基本上就会用了. --WH 一.什么是IOC? IOC:控制反转,通俗点讲,将对象的创建权交给spring,我们需要new对象,则由spr ...

  9. Perl一行式:字段处理和计算

    perl一行式程序系列文章:Perl一行式 获取每行最后一个字段 $ perl -alne 'print $F[$#F]' file.log 这里涉及到了选项"-a".数组@F.这 ...

  10. python可变对象和不可变对象的解释

    数据类型分为可变.不可变.可变对象表示可以原处修改该数据对象,不可变对象表示必须创建新对象来保存修改后的数据. 在基础数据类型中: 数值.字符串.元组.frozenset是不可变对象 列表.set.d ...