POJ2349+prim
最小生成树
/*
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的更多相关文章
- POJ2349 Arctic Network(Prim)
Arctic Network Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 16968 Accepted: 5412 D ...
- 最小生成树练习3(普里姆算法Prim)
风萧萧兮易水寒,壮士要去敲代码.本女子开学后再敲了.. poj1258 Agri-Net(最小生成树)水题. #include<cstdio> #include<cstring> ...
- POJ-2349 Arctic Network---MST的第m长的边
题目链接: https://vjudge.net/problem/POJ-2349 题目大意: 要在n个节点之间建立通信网络,其中m个节点可以用卫星直接连接,剩下的节点都要用线路连接,求剩下这些线路中 ...
- 图的生成树(森林)(克鲁斯卡尔Kruskal算法和普里姆Prim算法)、以及并查集的使用
图的连通性问题:无向图的连通分量和生成树,所有顶点均由边连接在一起,但不存在回路的图. 设图 G=(V, E) 是个连通图,当从图任一顶点出发遍历图G 时,将边集 E(G) 分成两个集合 T(G) 和 ...
- 最小生成树---Prim算法和Kruskal算法
Prim算法 1.概览 普里姆算法(Prim算法),图论中的一种算法,可在加权连通图里搜索最小生成树.意即由此算法搜索到的边子集所构成的树中,不但包括了连通图里的所有顶点(英语:Vertex (gra ...
- 最小生成树(prim&kruskal)
最近都是图,为了防止几次记不住,先把自己理解的写下来,有问题继续改.先把算法过程记下来: prime算法: 原始的加权连通图——————D被选作起点,选与之相连的权值 ...
- Prim 最小生成树算法
Prim 算法是一种解决最小生成树问题(Minimum Spanning Tree)的算法.和 Kruskal 算法类似,Prim 算法的设计也是基于贪心算法(Greedy algorithm). P ...
- poj1789--最小生成树(prim)
水题... 题目大意: 用一个7位的字符串代表一个编号,两个编号之间的distance代表这两个编号之间不同字母的个数.一个编号只能由另一个编号“衍生”出来,代价是这两个编号之间相应的distance ...
- 最小生成树のprim算法
Problem A Time Limit : 1000/1000ms (Java/Other) Memory Limit : 32768/32768K (Java/Other) Total Sub ...
随机推荐
- java 下载文件功能代码例子
public static void down(HttpServletRequest request, HttpServletResponse response) throws Exceptio ...
- C# GET 和 SET作用
C#中get和SET,看来看去还是看不懂,通俗一点解释一下,用了有什么好处,不用会怎么样 如果你这样写是没有什么不一样的. private int __Old; public int Old{ get ...
- [GeekBand] STL与泛型编程(1)
在C++语法的学习过程中,我们已经对模板有了基本的了解.泛型编程就是以模板为工具的.泛化的编程思想.本篇文章介绍了一些在之前的文章中没有涉及到的一些模板知识.泛型编程知识和几种容器.关于模板的一些重复 ...
- DDL操作前后都有COMMIT
引用出处: http://www.itpub.net/thread-1746448-1-1.html 要说明这个问题,首先需要说明什么是DDL语句.DDL语句是数据定义语句,包括各种数据对象的创建.修 ...
- C 再识数组指针 指针数组的概念
参考出处: http://www.cnblogs.com/mq0036/p/3382732.html http://www.cnblogs.com/hongcha717/archive/2010/10 ...
- 增加用户为SiteCollection的管理员
1.SiteSettings-->Site collection administrators --> 增加你需要的用户
- BootStrap中Affix控件的使用方法及如何保持布局的美观
Affix是BootStrap中的一个很有用的控件,他能够监视浏览器的滚动条的位置并让你的导航始终都在页面的可视区域.一开始的时候,导航在页面中是普通的流式布局,占有文档中固定的位置,当页面滚动的时候 ...
- 01_mvc保存时出错
修改实体类报错 存储区更新.插入或删除语句影响到了意外的行数(0).实体在加载后可能被修改或删除.刷新 ObjectStateManager 项. 原因是 数据表中的自增主键列未赋值.
- GridView - javascript 触发后台 OnSelectedIndexChanged
1.ASPX <asp:GridView ID="gdvDealers" runat="server" AutoGenerateColumns=" ...
- CentOS-6.3安装配置Nginx
安装说明 系统环境:CentOS-6.3软件:nginx-1.2.6.tar.gz安装方式:源码编译安装 安装位置:/usr/local/nginx 下载地址:http://nginx.org/en/ ...