最小生成树

 /*
prim
题意:给定一些点,一些卫星,一个卫星能连接两个点,点和点之间通信有一定的距离限制。
问能使得所有的点联通的最小距离。
*/
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<algorithm>
#include<iostream>
#include<queue>
#include<map>
#include<stack>
#include<set>
#include<math.h>
using namespace std;
typedef long long int64;
//typedef __int64 int64;
typedef pair<int64,int64> PII;
#define MP(a,b) make_pair((a),(b))
const int maxn = ;
const int inf = 0x7fffffff;
const double pi=acos(-1.0);
const double eps = 1e-; struct Node{
double x,y;
}a[ maxn ];
int vis[ maxn ];
double dis[ maxn ];
double mat[ maxn ][ maxn ]; double dist( Node a,Node b ){
return sqrt( (a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y) );
} void init( int n ){
for( int i=;i<=n;i++ ){
for( int j=;j<=n;j++ ){
mat[i][j] = dist( a[i],a[j] );
}
}
return ;
} void prim( int n ){
for( int i=;i<=n;i++ ){
vis[ i ] = ;
dis[ i ] = mat[][i];
}
vis[ ] = ;
for( int i=;i<=n;i++ ){
int M = inf;
int id = -;
for( int j=;j<=n;j++ ){
if( vis[ j ]==&&M>dis[j] ){
M = dis[ j ];
id = j;
}
}
if( id==- ) return ;
vis[ id ] = ;
for( int j=;j<=n;j++ ){
if( vis[j]==&&dis[j]>mat[ id ][ j ] ){
dis[ j ] = mat[ id ][ j ];
}
}
}
return ;
} int main(){
int T;
scanf("%d",&T);
while( T-- ){
int s,n;
scanf("%d%d",&s,&n);
for( int i=;i<=n;i++ )
scanf("%lf%lf",&a[i].x,&a[i].y);
init( n );
prim( n );
sort( dis+,dis++n );
//for( int i=1;i<=n;i++ )
// printf("%lf ",dis[ i ]);
//puts("");
printf("%.2lf\n",dis[ n-s+ ]);
}
return ;
}

POJ2349+prim的更多相关文章

  1. POJ2349 Arctic Network(Prim)

    Arctic Network Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 16968   Accepted: 5412 D ...

  2. 最小生成树练习3(普里姆算法Prim)

    风萧萧兮易水寒,壮士要去敲代码.本女子开学后再敲了.. poj1258 Agri-Net(最小生成树)水题. #include<cstdio> #include<cstring> ...

  3. POJ-2349 Arctic Network---MST的第m长的边

    题目链接: https://vjudge.net/problem/POJ-2349 题目大意: 要在n个节点之间建立通信网络,其中m个节点可以用卫星直接连接,剩下的节点都要用线路连接,求剩下这些线路中 ...

  4. 图的生成树(森林)(克鲁斯卡尔Kruskal算法和普里姆Prim算法)、以及并查集的使用

    图的连通性问题:无向图的连通分量和生成树,所有顶点均由边连接在一起,但不存在回路的图. 设图 G=(V, E) 是个连通图,当从图任一顶点出发遍历图G 时,将边集 E(G) 分成两个集合 T(G) 和 ...

  5. 最小生成树---Prim算法和Kruskal算法

    Prim算法 1.概览 普里姆算法(Prim算法),图论中的一种算法,可在加权连通图里搜索最小生成树.意即由此算法搜索到的边子集所构成的树中,不但包括了连通图里的所有顶点(英语:Vertex (gra ...

  6. 最小生成树(prim&kruskal)

    最近都是图,为了防止几次记不住,先把自己理解的写下来,有问题继续改.先把算法过程记下来: prime算法:                  原始的加权连通图——————D被选作起点,选与之相连的权值 ...

  7. Prim 最小生成树算法

    Prim 算法是一种解决最小生成树问题(Minimum Spanning Tree)的算法.和 Kruskal 算法类似,Prim 算法的设计也是基于贪心算法(Greedy algorithm). P ...

  8. poj1789--最小生成树(prim)

    水题... 题目大意: 用一个7位的字符串代表一个编号,两个编号之间的distance代表这两个编号之间不同字母的个数.一个编号只能由另一个编号“衍生”出来,代价是这两个编号之间相应的distance ...

  9. 最小生成树のprim算法

    Problem A Time Limit : 1000/1000ms (Java/Other)   Memory Limit : 32768/32768K (Java/Other) Total Sub ...

随机推荐

  1. iOS - 字典(NSDictionary)

    1. 字典类型的常用处理 //---------------不可变字典 //1.字典的创建 NSArray *array1 = [NSArray arrayWithObjects:@"zha ...

  2. css3学习笔记之文本效果

    CSS3的文本阴影 CSS3中,text-shadow属性适用于文本阴影. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 <!DOCTYPE html ...

  3. 【墙裂推荐】大学生如何学习WEB开发

    每天网络上有上万条Web招聘职位,招聘要求很简单: 会JavaScript,会CSS,能开发网页,能设计网页. 但我们真正面试时才发现:都是些很小很小的知识点! 我们没有实践过,没有碰到过,头脑一片茫 ...

  4. MySQL数据库的登陆

    MySQL数据库的登陆 MySQL是一种C/S结构. C/S(Client/Server)客户端/服务器 MySQL的客户端: 1.cmd客户端 2.可视化图形界面 3.php代码 登陆: MySQL ...

  5. C++对象的JSON序列化与反序列化探索

    一:背景 作为一名C++开发人员,我一直很期待能够像C#与JAVA那样,可以轻松的进行对象的序列化与反序列化,但到目前为止,尚未找到相对完美的解决方案. 本文旨在抛砖引玉,期待有更好的解决方案:同时向 ...

  6. java运算符新用法和^新认识

    public class Demo1 { public static void main(String[] args) { boolean t = false | true; System.out.p ...

  7. mysql中的count(primary_key)、count(1)、count(*)的区别

    表结构如下: mysql> show create table user\G; *************************** 1. row ********************** ...

  8. C#,PHP对应加密函数

    require_once "JunDes.php"; $jDes=new JunDes(); echo $jDes->encode('98765'); //echo $jDe ...

  9. mouseenter 事件,固定右侧客服特效

    不论鼠标指针穿过被选元素或其子元素,都会触发 mouseover 事件. 只有在鼠标指针穿过被选元素时,才会触发 mouseenter 事件. 当鼠标指针离开元素时,会发生 mouseleave 事件 ...

  10. Jquery 控件

    1. Jeditable 2. Select2 3. superfish 4. Jquery file upload https://blueimp.github.io/jQuery-File-Upl ...