1 /*
 2 10034 - Freckles
 3 克鲁斯克尔最小生成树!~
 4 */
 5 #include<iostream>
 6 #include<cstdio>
 7 #include<cmath>
 8 #include<algorithm>
 9 using namespace std;
10
11 struct node{
12    double x, y;
13 };
14
15 struct tree{
16    int u, v;
17    double d;
18 };
19
20 node nd[105];
21 int f[105];
22 tree tt[5010];
23
24 bool cmp(tree a, tree b){
25    return a.d < b.d;
26 }
27
28 int getFather(int x){
29    return x==f[x] ? x : f[x]=getFather(f[x]);
30 }
31
32 int Union(int a, int b){
33    int fa=getFather(a), fb=getFather(b);
34    if(fa!=fb){
35       f[fa]=fb;
36       return 1;
37    }
38    return 0;
39 }
40
41 int main(){
42    int t;
43    cin>>t;
44    while(t--){
45       int n;
46       cin>>n;
47       for(int i=1; i<=n; ++i){
48          cin>>nd[i].x>>nd[i].y;
49          f[i]=i;
50       }
51       int cnt=0;
52       for(int i=1; i<n; ++i)
53          for(int j=i+1; j<=n; ++j){
54             tt[cnt].u=i;
55             tt[cnt].v=j;
56             tt[cnt++].d=sqrt((nd[i].x-nd[j].x)*(nd[i].x-nd[j].x) + (nd[i].y-nd[j].y)*(nd[i].y-nd[j].y));
57          }
58       sort(tt, tt+cnt, cmp);
59       double sum=0.0;
60       for(int i=0; i<cnt; ++i){
61          if(Union(tt[i].u, tt[i].v))
62             sum+=tt[i].d;
63       }
64       printf("%.2lf\n", sum);
65       if(t) printf("\n");
66    }
67 }

转载于:https://www.cnblogs.com/hujunzheng/p/3898428.html

10034 - Freckles 克鲁斯克尔最小生成树!~相关推荐

  1. 图论基础知识--最小生成树算法kruskal(克鲁斯克尔)和普里姆算法(Prim算法);最短路径算法Dijkstra(迪杰斯特拉)和Floyd(弗洛伊德)

    一.基础知识   有向图   无向图 以无向图为例: 邻接矩阵: 度矩阵(对角矩阵): 二.最小生成树 应用:将网络顶点看着城市,边看着城市之间通讯网,边的权重看着成本,根据最小生成树可以构建城市之间 ...

  2. uva 10034 Freckles (kruskal||prim)

    题目上仅仅给的坐标,没有给出来边的长度,不管是prim算法还是kruskal算法我们都须要知道边的长度来操作. 这道题是浮点数,也没啥大的差别,处理一下就能够了. 有关这两个算法的介绍前面我已经写过了 ...

  3. linux服务器查杀,Linux服务器PHP后门查杀

    shell脚本一句话查找PHP一句话木马 # find ./ -name "*.php" |xargs egrep "phpspy|c99sh|milw0rm|eval( ...

  4. 【恋上数据结构】图代码实现、最小生成树(Prim、Kruskal)、最短路径(Dijkstra、Bellman-Ford、Floyd)

    图 最小生成树(Minimum Spanning Tree) Prim算法 切分定理 Prim算法 – 执行过程 Prim算法 – 代码实现 Kruskal算法 Kruskal算法 – 执行过程 Kr ...

  5. 三种最小生成树算法的简要比较:Kruskal算法, 破圈法(管梅谷), Prim算法

    本文针对之前常常弄混Kruskal算法, 破圈法(管梅谷), Prim算法这三种算法的问题,仅仅简单地总结Kruskal算法, 破圈法(管梅谷), Prim算法在求最小生成树时的思路的区别. 如果目的 ...

  6. 各种图论模型及其解答(转)

    原文转自Jelline blog http://blog.chinaunix.net/uid-9112803-id-411340.html 摘要: 本文用另一种思路重新组织<图论及其应用> ...

  7. python【数据结构与算法】Graph(图)的总结

    文章目录 1 基本概念 2 图的存储 2.1 邻接矩阵 2.2 邻接表 3 图的遍历 3.1 深搜-stack实现 3.2 广搜-queue实现 4 拓扑排序 5 图的最小生成树 5.1 普利姆算法 ...

  8. vaOJ10369 - Arctic Network

    1 /* 2 The first line of each test case contains 1 <= S <= 100, the number of satellite channe ...

  9. UvaOJ10369 - Arctic Network

    1 /* 2 The first line of each test case contains 1 <= S <= 100, the number of satellite channe ...

最新文章

  1. Facebook开源图嵌入“神器”:无需GPU,高效处理数十亿级实体图形 | 极客头条...
  2. es6之扩展运算符...
  3. [译]使用JavaScript来操纵数据视图DataView新建视图的默认值
  4. Android系统Surface机制的SurfaceFlinger服务对帧缓冲区(Frame Buffer)的管理分析
  5. 【学习笔记】一些常用的数学公式
  6. flash activex java_Adobe flash player ActiveX和NPAPI和PPAPI 这三个软件有什么区别?
  7. 免费数据集获取加速器|Graviti Open Datasets
  8. html5中如何实现跑马灯效果,h5_实现跑马灯效果
  9. Android -- SEGV_MAPERR,SEGV_ACCERR
  10. java mysql 分页计算公式_关于Java的分页算法,急!
  11. jquery 滑动取值
  12. 全国大学生“高教杯“成图大赛:关于蜗轮蜗杆快速建模研究(二)
  13. 微信公众平台接口测试帐号登录
  14. 软件测试人员需不需要懂代码
  15. 永恩上线服务器维护,LOL10.16永恩BUG商城问题介绍-LOL10.16永恩BUG商城问题有哪些_牛游戏网...
  16. 常用SEISMIC BINARY数据的读取
  17. pdf预览-pdf.js预览base64格式的数据
  18. DNS服务器之一:总揽与非权威DNS的搭建
  19. PTA 7-3 输油管道问题 (50 分)
  20. 如何判断一棵树是不是另一棵树的子树

热门文章

  1. request用法_3分钟短文:说说Laravel页面会话之间的数据保存Session用法
  2. java角度_java中角度或弧度的计算 | 学步园
  3. SpringMVC 集成 mybatisPlus 分析
  4. -bash: lsof: 未找到命令
  5. gradle下载及配置
  6. 关于在nw里使用require('printer')和nw.require('printer')报错的问题
  7. 封装一个邮件发送工具类,一个字,巴适
  8. ecshop模板中使用php,使ecshop模板中可引用常量的实现方法
  9. qt将光标相对于桌面的位置转换为相对于窗口的位置
  10. git status查看文件的状态