10034 - Freckles 克鲁斯克尔最小生成树!~
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 克鲁斯克尔最小生成树!~相关推荐
- 图论基础知识--最小生成树算法kruskal(克鲁斯克尔)和普里姆算法(Prim算法);最短路径算法Dijkstra(迪杰斯特拉)和Floyd(弗洛伊德)
一.基础知识 有向图 无向图 以无向图为例: 邻接矩阵: 度矩阵(对角矩阵): 二.最小生成树 应用:将网络顶点看着城市,边看着城市之间通讯网,边的权重看着成本,根据最小生成树可以构建城市之间 ...
- uva 10034 Freckles (kruskal||prim)
题目上仅仅给的坐标,没有给出来边的长度,不管是prim算法还是kruskal算法我们都须要知道边的长度来操作. 这道题是浮点数,也没啥大的差别,处理一下就能够了. 有关这两个算法的介绍前面我已经写过了 ...
- linux服务器查杀,Linux服务器PHP后门查杀
shell脚本一句话查找PHP一句话木马 # find ./ -name "*.php" |xargs egrep "phpspy|c99sh|milw0rm|eval( ...
- 【恋上数据结构】图代码实现、最小生成树(Prim、Kruskal)、最短路径(Dijkstra、Bellman-Ford、Floyd)
图 最小生成树(Minimum Spanning Tree) Prim算法 切分定理 Prim算法 – 执行过程 Prim算法 – 代码实现 Kruskal算法 Kruskal算法 – 执行过程 Kr ...
- 三种最小生成树算法的简要比较:Kruskal算法, 破圈法(管梅谷), Prim算法
本文针对之前常常弄混Kruskal算法, 破圈法(管梅谷), Prim算法这三种算法的问题,仅仅简单地总结Kruskal算法, 破圈法(管梅谷), Prim算法在求最小生成树时的思路的区别. 如果目的 ...
- 各种图论模型及其解答(转)
原文转自Jelline blog http://blog.chinaunix.net/uid-9112803-id-411340.html 摘要: 本文用另一种思路重新组织<图论及其应用> ...
- python【数据结构与算法】Graph(图)的总结
文章目录 1 基本概念 2 图的存储 2.1 邻接矩阵 2.2 邻接表 3 图的遍历 3.1 深搜-stack实现 3.2 广搜-queue实现 4 拓扑排序 5 图的最小生成树 5.1 普利姆算法 ...
- vaOJ10369 - Arctic Network
1 /* 2 The first line of each test case contains 1 <= S <= 100, the number of satellite channe ...
- UvaOJ10369 - Arctic Network
1 /* 2 The first line of each test case contains 1 <= S <= 100, the number of satellite channe ...
最新文章
- Facebook开源图嵌入“神器”:无需GPU,高效处理数十亿级实体图形 | 极客头条...
- es6之扩展运算符...
- [译]使用JavaScript来操纵数据视图DataView新建视图的默认值
- Android系统Surface机制的SurfaceFlinger服务对帧缓冲区(Frame Buffer)的管理分析
- 【学习笔记】一些常用的数学公式
- flash activex java_Adobe flash player ActiveX和NPAPI和PPAPI 这三个软件有什么区别?
- 免费数据集获取加速器|Graviti Open Datasets
- html5中如何实现跑马灯效果,h5_实现跑马灯效果
- Android -- SEGV_MAPERR,SEGV_ACCERR
- java mysql 分页计算公式_关于Java的分页算法,急!
- jquery 滑动取值
- 全国大学生“高教杯“成图大赛:关于蜗轮蜗杆快速建模研究(二)
- 微信公众平台接口测试帐号登录
- 软件测试人员需不需要懂代码
- 永恩上线服务器维护,LOL10.16永恩BUG商城问题介绍-LOL10.16永恩BUG商城问题有哪些_牛游戏网...
- 常用SEISMIC BINARY数据的读取
- pdf预览-pdf.js预览base64格式的数据
- DNS服务器之一:总揽与非权威DNS的搭建
- PTA 7-3 输油管道问题 (50 分)
- 如何判断一棵树是不是另一棵树的子树
热门文章
- request用法_3分钟短文:说说Laravel页面会话之间的数据保存Session用法
- java角度_java中角度或弧度的计算 | 学步园
- SpringMVC 集成 mybatisPlus 分析
- -bash: lsof: 未找到命令
- gradle下载及配置
- 关于在nw里使用require('printer')和nw.require('printer')报错的问题
- 封装一个邮件发送工具类,一个字,巴适
- ecshop模板中使用php,使ecshop模板中可引用常量的实现方法
- qt将光标相对于桌面的位置转换为相对于窗口的位置
- git status查看文件的状态