HDU 1162 Eddy's picture (最小生成树)(java版)
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版)的更多相关文章
- hdu 1162 Eddy's picture(最小生成树算法)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1162 Eddy's picture Time Limit: 2000/1000 MS (Java/Ot ...
- hdu 1162 Eddy's picture (最小生成树)
Eddy's picture Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)To ...
- 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 ...
- HDU 1162 Eddy's picture
坐标之间的距离的方法,prim算法模板. Eddy's picture Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32 ...
- hdu 1162 Eddy's picture (prim)
Eddy's pictureTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Tot ...
- HDU 1162 Eddy's picture (最小生成树 prim)
题目链接 Problem Description Eddy begins to like painting pictures recently ,he is sure of himself to be ...
- HDU 1162 Eddy's picture (最小生成树 普里姆 )
题目链接 Problem Description Eddy begins to like painting pictures recently ,he is sure of himself to be ...
- hdu 1162 Eddy's picture(最小生成树,基础)
题目 #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include<string.h> #include <ma ...
- 题解报告:hdu 1162 Eddy's picture
Problem Description Eddy begins to like painting pictures recently ,he is sure of himself to become ...
随机推荐
- poj 1177 --- Picture(线段树+扫描线 求矩形并的周长)
题目链接 Description A number of rectangular posters, photographs and other pictures of the same shape a ...
- kafka快速开始
Step 1: Download the code Step 2: Start the server Step 3: Create a topic Step 4: Send some messages ...
- IdentityServer Resource Owner Password
Resource Owner Password 模式需要自己实现用户名密码的校验 新增ResourceOwnerPasswordValidator实现IResourceOwnerPasswordVal ...
- 使用ANNdotNET进行情感分析
2018年10月的MSDN杂志上发表了由James McCaffrey撰写的文章“使用CNTK的情感分析” .在这篇博文中,我将向您介绍这篇非常好且写得很好的MSDN文章示例.我不打算重复MSDN文章 ...
- Android--序列化XML数据
前言 之前有讲过在Android下如何解析XML文件的内容,这篇博客讲讲如何把一个对象序列化为XML格式,有时候一些项目中需要传递一些XML格式的数据.而对于如何解析XML,不了解的朋友可以看看其他三 ...
- Windows服务器端口绑定证书
打开IIS:inetmgr 打开服务:ctrl+shift+Esc 查看证书秘钥: 服务器查看https证书绑定: 1) 查看证书 netsh http show sslcert 2) 将证书与端口绑 ...
- 彻底弄懂python编码
在编写python程序的过程中,中英文混用经常会出现编码问题.围绕此问题,本文首先介绍编码的含义及常用编码,随后列举几个python经常遇到的编码异常及解决方法,接着列举笔者在实践中遇到的异常出现的情 ...
- 用初中代数结合python画出正方形
在屏幕上打印类似下面的图形: 常规画正方形的算法: 这几乎是初学所有计算机语言时都会遇到的问题.算法都大致类似,就是找出打印规律然后用计算机语句表达出来.最常规的算法是:输入数字n就打印n行,首行和尾 ...
- samba企业级实战应用详解-技术流ken
1.简介 Samba是一套使用SMB(Server Message Block)协议的应用程序, 通过支持这个协议, Samba允许Linux服务器与Windows系统之间进行通信,使跨平台的互访成为 ...
- __EF批量删除
控制器: [HttpPost] public int Delete_All(string Id) { List<int> IDS = new List<int>();//创建l ...