POJ2349+prim
最小生成树
1 /* 2 prim 3 题意:给定一些点,一些卫星,一个卫星能连接两个点,点和点之间通信有一定的距离限制。 4 问能使得所有的点联通的最小距离。 5 */ 6 #include<stdio.h> 7 #include<string.h> 8 #include<stdlib.h> 9 #include<algorithm> 10 #include<iostream> 11 #include<queue> 12 #include<map> 13 #include<stack> 14 #include<set> 15 #include<math.h> 16 using namespace std; 17 typedef long long int64; 18 //typedef __int64 int64; 19 typedef pair<int64,int64> PII; 20 #define MP(a,b) make_pair((a),(b)) 21 const int maxn = 505; 22 const int inf = 0x7fffffff; 23 const double pi=acos(-1.0); 24 const double eps = 1e-8; 25 26 struct Node{ 27 double x,y; 28 }a[ maxn ]; 29 int vis[ maxn ]; 30 double dis[ maxn ]; 31 double mat[ maxn ][ maxn ]; 32 33 double dist( Node a,Node b ){ 34 return sqrt( (a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y) ); 35 } 36 37 void init( int n ){ 38 for( int i=1;i<=n;i++ ){ 39 for( int j=1;j<=n;j++ ){ 40 mat[i][j] = dist( a[i],a[j] ); 41 } 42 } 43 return ; 44 } 45 46 void prim( int n ){ 47 for( int i=1;i<=n;i++ ){ 48 vis[ i ] = 0; 49 dis[ i ] = mat[1][i]; 50 } 51 vis[ 1 ] = 1; 52 for( int i=1;i<=n;i++ ){ 53 int M = inf; 54 int id = -1; 55 for( int j=1;j<=n;j++ ){ 56 if( vis[ j ]==0&&M>dis[j] ){ 57 M = dis[ j ]; 58 id = j; 59 } 60 } 61 if( id==-1 ) return ; 62 vis[ id ] = 1; 63 for( int j=1;j<=n;j++ ){ 64 if( vis[j]==0&&dis[j]>mat[ id ][ j ] ){ 65 dis[ j ] = mat[ id ][ j ]; 66 } 67 } 68 } 69 return ; 70 } 71 72 int main(){ 73 int T; 74 scanf("%d",&T); 75 while( T-- ){ 76 int s,n; 77 scanf("%d%d",&s,&n); 78 for( int i=1;i<=n;i++ ) 79 scanf("%lf%lf",&a[i].x,&a[i].y); 80 init( n ); 81 prim( n ); 82 sort( dis+1,dis+1+n ); 83 //for( int i=1;i<=n;i++ ) 84 // printf("%lf ",dis[ i ]); 85 //puts(""); 86 printf("%.2lf\n",dis[ n-s+1 ]); 87 } 88 return 0; 89 }
View Code
转载于:https://www.cnblogs.com/xxx0624/p/3268181.html
POJ2349+prim相关推荐
- 数据结构与算法(7-3)最小生成树(普里姆(Prim)算法和克鲁斯卡尔(Kruskal)算法)
目录 一.最小生成树简介 二.普里姆算法(Prim) 1.原理 2.存储 2-1.图顶点和权: 2-3. 最小生成树: 3.Prim()函数 3-1.新顶点入树 3-2.保留最小权 3-3. 找到最小 ...
- 基本数据结构(图: 基本结构,DFS,prim算法, kruskal算法)
#include <iostream> using namespace std; //约定: //1. 图是由很多节点(VERTEX)构成的, 因此图结构是由一个VERTEX的链表构成的, ...
- 技术图文:如何利用C# 实现 Prim 最小生成树算法?
背景 我们上一篇图文介绍了 如何利用 C# 实现 Kruskal 最小生成树算法?,Kruskal 算法通过寻找边最优的方式来构造最小生成树,本篇图文介绍如何利用 C# 实现 Prim 最小生成树算法 ...
- 【数据结构】最小生成树 Prim算法 Kruskal算法
最小生成树应用场景: 假设以下场景,有一块木板,板上钉上一些钉子,这些钉子可以由一些细绳连接起来.假设每个钉子可以通过一根或者多根细绳连接起来,那么一定存在这样得情况,即用最少的细绳把所有的钉子连接起 ...
- HDU1102(Prim算法)
这道题附加了一个条件是:最后给出q行,代表这两个村庄是通路的,所以可以将其权值赋值为零. #include<iostream> #include<algorithm> #inc ...
- HDU1162(Prim算法)
方法一:Prim #include<iostream> #include<algorithm> #include<cstring> #include<ioma ...
- HDU1863(Prim算法)
方法一:Prim算法 #include<iostream> #include<algorithm> #include<cstring> #include<ve ...
- 最小生成树(kruskal、prim、最小生成森林问题、严格次小生成树)
整理的算法模板合集: ACM模板 目录 一.kruskal算法 二.prim算法 三.Boruvka算法 四.生成森林问题(K颗树) 五.最小生成树的唯一性 六.严格次小生成树 LCA优化的次小生成树 ...
- P3366 【模板】最小生成树(链式前向星,prim,有坑)难度⭐⭐
题目链接 输入: 4 5 1 2 2 1 3 2 1 4 3 2 3 4 3 4 3 输出: 7 链式前向星相比于矩阵,遍历的代码更加复杂一点,但是省空间,这道题用矩阵存就MLE,只能用链式前向星存. ...
最新文章
- ajax用https请求不了_Chrome滚动事件概率性Block Ajax请求
- [Codeforces50C]Happy Farm 5 凸包
- 三维家导入户型镜像怎么使用_UG虎钳三维建模教学,认真看仔细学习了!
- Linux学习笔记(知识点总结)
- 空间皮肤代码_OpenCV实现皮肤表面粗糙度3D显示
- jq在html中添加dom元素,使用jQuery添加DOM元素的最佳方法
- 2018/12/26
- 旅游新时尚:点点鼠标就可“周游世界”
- (原)使用ass字幕文件通过ffmpeg给视频添加字幕的一些研究
- CLIENT_PLUGIN_AUTH is required 解决办法
- DSPE-PEG-Cys/DQA/Rapamycin磷脂聚乙二醇修饰半胱氨酸/地喹氯铵/雷帕霉素
- laravel中提供DB facade(原始查找)、查询构造器、Eloquent ORM三种操作数据库方式
- android环信接收透传,环信透传
- CC00027.kylin——|HadoopOLAP_Kylin.V27|——|Kylin.v27|Kylin构建Cube|实时OLAP.V3|
- 计算机流量的单位是什么,单位g和ml哪个大?
- 自制APP连接OneNET---实现数据监控和下发控制(MQTT)
- 通过室内LED光打造世界的标志
- mysql meb备份_MySQL的企业备份(MEB)
- Jenkins CI服务器搭建及Maven私服Nexus
- suricata应用层协议解析
热门文章
- python工程技巧_重点来了!掌握这些Python技巧,将给你节省大量时间
- jvm内存参数配置_“步步精心”-常用JVM配置参数
- IDEA创建mavenWeb项目笔记
- 不同路径 IIPython解法
- android实现自动抢红包,Android手机辅助功能实现自动抢微信红包功能
- vsflexgrid单元格换行后自动使用行高_Excel表格不会换行?10个超实用Excel小技巧,用了都说好!...
- UE4学习-4.25版本Possess无法继承、UNavigationSystem命名空间找不到的解决方法
- 2015计算机二级c语言6,2015年计算机二级《C语言》最新章节练习题(6)
- midaspay能删除吗_midasPay返回90009错误
- python装饰器传递参数_如何将额外的参数传递给Python装饰器?