最小生成树

 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相关推荐

  1. 数据结构与算法(7-3)最小生成树(普里姆(Prim)算法和克鲁斯卡尔(Kruskal)算法)

    目录 一.最小生成树简介 二.普里姆算法(Prim) 1.原理 2.存储 2-1.图顶点和权: 2-3. 最小生成树: 3.Prim()函数 3-1.新顶点入树 3-2.保留最小权 3-3. 找到最小 ...

  2. 基本数据结构(图: 基本结构,DFS,prim算法, kruskal算法)

    #include <iostream> using namespace std; //约定: //1. 图是由很多节点(VERTEX)构成的, 因此图结构是由一个VERTEX的链表构成的, ...

  3. 技术图文:如何利用C# 实现 Prim 最小生成树算法?

    背景 我们上一篇图文介绍了 如何利用 C# 实现 Kruskal 最小生成树算法?,Kruskal 算法通过寻找边最优的方式来构造最小生成树,本篇图文介绍如何利用 C# 实现 Prim 最小生成树算法 ...

  4. 【数据结构】最小生成树 Prim算法 Kruskal算法

    最小生成树应用场景: 假设以下场景,有一块木板,板上钉上一些钉子,这些钉子可以由一些细绳连接起来.假设每个钉子可以通过一根或者多根细绳连接起来,那么一定存在这样得情况,即用最少的细绳把所有的钉子连接起 ...

  5. HDU1102(Prim算法)

    这道题附加了一个条件是:最后给出q行,代表这两个村庄是通路的,所以可以将其权值赋值为零. #include<iostream> #include<algorithm> #inc ...

  6. HDU1162(Prim算法)

    方法一:Prim #include<iostream> #include<algorithm> #include<cstring> #include<ioma ...

  7. HDU1863(Prim算法)

    方法一:Prim算法 #include<iostream> #include<algorithm> #include<cstring> #include<ve ...

  8. 最小生成树(kruskal、prim、最小生成森林问题、严格次小生成树)

    整理的算法模板合集: ACM模板 目录 一.kruskal算法 二.prim算法 三.Boruvka算法 四.生成森林问题(K颗树) 五.最小生成树的唯一性 六.严格次小生成树 LCA优化的次小生成树 ...

  9. P3366 【模板】最小生成树(链式前向星,prim,有坑)难度⭐⭐

    题目链接 输入: 4 5 1 2 2 1 3 2 1 4 3 2 3 4 3 4 3 输出: 7 链式前向星相比于矩阵,遍历的代码更加复杂一点,但是省空间,这道题用矩阵存就MLE,只能用链式前向星存. ...

最新文章

  1. ajax用https请求不了_Chrome滚动事件概率性Block Ajax请求
  2. [Codeforces50C]Happy Farm 5 凸包
  3. 三维家导入户型镜像怎么使用_UG虎钳三维建模教学,认真看仔细学习了!
  4. Linux学习笔记(知识点总结)
  5. 空间皮肤代码_OpenCV实现皮肤表面粗糙度3D显示
  6. jq在html中添加dom元素,使用jQuery添加DOM元素的最佳方法
  7. 2018/12/26
  8. 旅游新时尚:点点鼠标就可“周游世界”
  9. (原)使用ass字幕文件通过ffmpeg给视频添加字幕的一些研究
  10. CLIENT_PLUGIN_AUTH is required 解决办法
  11. DSPE-PEG-Cys/DQA/Rapamycin磷脂聚乙二醇修饰半胱氨酸/地喹氯铵/雷帕霉素
  12. laravel中提供DB facade(原始查找)、查询构造器、Eloquent ORM三种操作数据库方式
  13. android环信接收透传,环信透传
  14. CC00027.kylin——|HadoopOLAP_Kylin.V27|——|Kylin.v27|Kylin构建Cube|实时OLAP.V3|
  15. 计算机流量的单位是什么,单位g和ml哪个大?
  16. 自制APP连接OneNET---实现数据监控和下发控制(MQTT)
  17. 通过室内LED光打造世界的标志
  18. mysql meb备份_MySQL的企业备份(MEB)
  19. Jenkins CI服务器搭建及Maven私服Nexus
  20. suricata应用层协议解析

热门文章

  1. python工程技巧_重点来了!掌握这些Python技巧,将给你节省大量时间
  2. jvm内存参数配置_“步步精心”-常用JVM配置参数
  3. IDEA创建mavenWeb项目笔记
  4. 不同路径 IIPython解法
  5. android实现自动抢红包,Android手机辅助功能实现自动抢微信红包功能
  6. vsflexgrid单元格换行后自动使用行高_Excel表格不会换行?10个超实用Excel小技巧,用了都说好!...
  7. UE4学习-4.25版本Possess无法继承、UNavigationSystem命名空间找不到的解决方法
  8. 2015计算机二级c语言6,2015年计算机二级《C语言》最新章节练习题(6)
  9. midaspay能删除吗_midasPay返回90009错误
  10. python装饰器传递参数_如何将额外的参数传递给Python装饰器?