/*Name: 最小生成树(kruskal) Author: Date: 10/04/12 19:17
*/#include <math.h>
#include <cstdio>
#include <iostream>using namespace std;const int M = 5050;int p[101], sum;
struct edge {int a;int b;double dis;
}e[M];
struct point {double x;double y;
}po[101];int cmp(const void *a, const void *b) {if ((*(edge *)a).dis > (*(edge *)b).dis) return 1;return -1;
}void init(int vs) {for (int i=1; i<=vs; ++i) p[i] = i;return ;
}int find(int v) {if (p[v] != v) p[v] = find(p[v]);return p[v];
}double join(edge e) {int x, y;x = find(e.a);y = find(e.b);if (x != y) {++sum;p[x] = y;return e.dis;}return 0;
}double kruskal(int es, int vs) {double ans = 0;init(vs);qsort(e, es, sizeof(edge), cmp);for (int i=0; i<es; ++i) {ans += join(e[i]);if (sum == vs) return ans;}
}int main() {int n;while (scanf("%d", &n) != EOF) {for (int i=1; i<=n; ++i) scanf ("%lf%lf", &po[i].x, &po[i].y);int es = 0;for (int i=1; i<n; ++i) {for (int j=i+1; j<=n; ++j) {e[es].dis = sqrt((po[i].x-po[j].x)*(po[i].x-po[j].x)+(po[i].y-po[j].y)*(po[i].y-po[j].y));e[es].a = i;e[es].b = j;++es;}}sum = 1;double ans = kruskal(es, n);printf ("%.2lf\n", ans);}return 0;
}

转载于:https://www.cnblogs.com/try86/archive/2012/04/10/2441110.html

hdu 1162(最小生成树kruskal)相关推荐

  1. hdu 1863(最小生成树kruskal)

    /*Name: hdu1863畅通工程 Author: Try86Date: 10/04/12 12:43Description: 最小生成树(kruskal) */ #include <cst ...

  2. HDOJ 1863畅通工程(最小生成树kruskal算法并查集实现)

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=1863 最小生成树kruskal算法:http://www.zhuoda.org/irini/78592.h ...

  3. 图的最小生成树-Kruskal算法

    问题引入 [问题描述] 编写程序,利用带权无向图的邻接矩阵存储,实现图的最小生成树Kruskal算法. [输入形式] 输入图的顶点序列及图的边的情况.如样例所示.边的输入以输入-1,-1,-1作为结束 ...

  4. 【老生谈算法】matlab实现Kruskal避圈算法求最小生成树——Kruskal避圈算法

    基于MATLAB的Kruskal避圈算法求最小生成树 1.原文下载: 本算法原文如下,有需要的朋友可以点击进行下载 序号 原文(点击下载) 本项目原文 [老生谈算法]基于MATLAB的Kruskal避 ...

  5. 最小生成树kruskal算法

    最小生成树kruskal算法 概述 算法分析 代码 概述 克鲁斯卡尔(Kruskal)(Kruskal)(Kruskal)算法是求连通网的最小生成树的另一种方法.与普里姆(Prim)(Prim)(Pr ...

  6. 实现最小生成树Kruskal算法(附完整代码)

    实现最小生成树Kruskal算法(附完整代码) Kruskal算法是一种常见的计算最小生成树的算法.它的主要思想是将所有的边按照权值从小到大进行排序,并逐个加入到生成树中,如果加入后不会形成环,则保留 ...

  7. HDU 1162 Eddy's picture (最小生成树)(java版)

    Eddy's picture 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1162 --每天在线,欢迎留言谈论. 题目大意: 给你N个点,求把这N个点 ...

  8. HDU 5253 最小生成树(kruskal)+ 并查集

    题目链接 #include<cstdio> #include<cmath> #include<cstring> #include<algorithm> ...

  9. HDU 4081 最小生成树(或者次小生成树)

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4081 Problem Description There were n cities in Chin ...

最新文章

  1. uva 11212 Editing a Book
  2. 页面jlabel背景色设置_(六)使用elementUI搭建管理员页面布局
  3. flink批量写入oracle,批量写入目标表存在重复写入问题
  4. qt 在点击菜单下的动作之后获取该菜单的名称
  5. asp.net 生成、解析条形码和二维码
  6. 动态规划(最长递增子序列)---最长摆动子序列
  7. duration java_Java Duration类| minusMinutes()方法与示例
  8. Linux: 系统文件权限总结
  9. Rust 算法排位记-选择排序图示与代码实现
  10. 射线计算机,面对射线-射频-计算机 我愿做“影像工匠师”
  11. 华为宣布今年将投入2亿美元推动鲲鹏计算产业发展
  12. 跨域的小小总结:js跨域及跨域的几种解决方法
  13. 关于简单的factorymode
  14. 各种主流浏览器内核引擎的对比分析
  15. php获取图片格式(图片后缀)
  16. iPhone投屏家中设备有哪些方法 iPhone投屏失败是怎么回事如何解决
  17. 第十五周项目二-----用哈希法组织关键字之线性探测法
  18. 微信公众号页面中监听手机“返回”,并回到公众号里
  19. adguard home上网慢_分享一下AdGuard HOME的使用情况和几条规则。
  20. 前端模板——家乡风景的介绍

热门文章

  1. EmbeddedBrowser
  2. Linux搜寻文件或目录命令解析
  3. 在Fedora 11中安装Apache2+PHP5+MySQL(LAMP)
  4. linux下find用法 find -name *.so -exec ll {} \;
  5. SQLite指南(0) 表和索引的文件存储结构
  6. SQL 两张结构一样的表合并查询
  7. rabbitmq丢消息的处理方法
  8. web.xml 中的listener、 filter、servlet 加载顺序及其详解
  9. MySQL 时间戳转换成秒
  10. 猛龙出击•东莞赛区新闻发布会隆重举行,粤港澳大湾区将迎来首场搏击盛宴...