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. ASCII码字符串普通加密解密-android

    //android后台Java //ASCII加密 String str = e.getText().toString(); StringBuilder s = new StringBuilder() ...

  2. jquery获取radio选中值及遍历

    使用jquery获取radio的值,最重要的是掌握jquery选择器的使用,在一个表单中我们通常是要获取被选中的那个radio项的值,所以要加checked来筛选,比如有以下的一些radio项:1.& ...

  3. ASP.NET Core 2.1中基于角色的授权

    ASP.NET Core 2.1中基于角色的授权 授权是来描述用户能够做什么的过程.例如,只允许管理员用户可以在电脑上进行软件的安装以及卸载.而非管理员用户只能使用软件而不能进行软件的安装以及卸载.它 ...

  4. HBase 在人工智能场景的使用

    近几年来,人工智能逐渐火热起来,特别是和大数据一起结合使用.人工智能的主要场景又包括图像能力.语音能力.自然语言处理能力和用户画像能力等等.这些场景我们都需要处理海量的数据,处理完的数据一般都需要存储 ...

  5. CSS语法基础

    引言:CSS语法 CSS规则由两个主要的部分构成:选择器,以及一条或者多条声明. selector { property: value; property: value; ... property: ...

  6. pxe+kickstart自动化批量安装系统详解-技术流ken

    前言 pxe+kickstart是一款可以实现自动化批量安装系统的服务,比较经典,下面将详细介绍此服务的安装和使用. 系统环境准备 系统版本:CentOS release 6.7 (Final) 内网 ...

  7. c++中的new、operator new、placement new

    一.定义 1.new new是c++中的关键字,,其行为总是一致的.它先调用operator new分配内存,然后调用构造函数初始化那段内存. new 操作符的执行过程:1. 调用operator n ...

  8. .net 后台判断是否要替换

    Response.Write("<script>window.onload=function (){if(confirm(\"该文件已经存在,确定要替换吗吗?\&quo ...

  9. webAPI 上传文件 404错误(转载)

    webAPI文件上传时文件过大404错误的问题  来源:https://www.cnblogs.com/dzhengyang/p/9149157.html 背景:最近公司有个需求,外网希望自动保存数据 ...

  10. 25.QT-模型视图

    模型视图设计模式的核心思想 使模型(数据)与视图(显示)相分离 模型只需要对外提供标准接口存取数据,无需数据如何显示 视图只需要自定义数据的显示方式,无需数据如何组织存储 当数据发生改变时,会通过信号 ...