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 = 505;
const int inf = 0x7fffffff;
const double pi=acos(-1.0);
const double eps = 1e-8;
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=1;i<=n;i++ ){
for( int j=1;j<=n;j++ ){
mat[i][j] = dist( a[i],a[j] );
}
}
return ;
}
void prim( int n ){
for( int i=1;i<=n;i++ ){
vis[ i ] = 0;
dis[ i ] = mat[1][i];
}
vis[ 1 ] = 1;
for( int i=1;i<=n;i++ ){
int M = inf;
int id = -1;
for( int j=1;j<=n;j++ ){
if( vis[ j ]==0&&M>dis[j] ){
M = dis[ j ];
id = j;
}
}
if( id==-1 ) return ;
vis[ id ] = 1;
for( int j=1;j<=n;j++ ){
if( vis[j]==0&&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=1;i<=n;i++ )
scanf("%lf%lf",&a[i].x,&a[i].y);
init( n );
prim( n );
sort( dis+1,dis+1+n );
//for( int i=1;i<=n;i++ )
// printf("%lf ",dis[ i ]);
//puts("");
printf("%.2lf\n",dis[ n-s+1 ]);
}
return 0;
}
分享到:
相关推荐
《POJ3026-Borg Maze:BFS与Prim算法的应用解析》 在计算机科学领域,图论是解决问题的重要工具之一,而BFS(广度优先搜索)和Prim算法则是其中的两种经典算法。本篇文章将围绕北大POJ3026题目“Borg Maze”来探讨...
标题中的"POJ2485-Highways【Prim】"指的是一个编程竞赛题目,源自北京大学的在线判题系统POJ(Problemset Online Judge)。这个题目要求使用Prim算法来解决,Prim算法是一种在图论中寻找最小生成树的经典算法。 ...
【标题】"POJ1789-Truck History【Prim】"是一个编程竞赛题目,源自北京大学的在线判题系统POJ(Problem Online Judge)。这个题目要求参赛者利用Prim算法来解决一个具体的问题。 【描述】"北大POJ1789-Truck ...
【标题】"POJ2031-Building a Space Station【Prim+计算几何】"是一道编程竞赛题目,源自北京大学的在线判题系统POJ(Problem Online Judge)。该题目结合了图论中的Prim算法与计算几何领域的知识,挑战参赛者的算法...
【标题】"POJ1258-Agri-Net【Prim】" 是一个编程竞赛题目,来源于北京大学的在线评测系统POJ(Problem Online Judge)。这个题目主要涉及到图论中的一个重要算法——普里姆(Prim)算法。 【描述】"北大POJ1258-...
标题 "POJ 1751 求最小生成树Prim算法(JAVA)" 提到的是一个编程挑战,涉及图论中的经典算法——Prim算法。在计算机科学中,Prim算法是用于寻找加权无向图的最小生成树的一种有效方法。最小生成树是一棵树形结构,...
标题中的“POJ 1789 最小生成树之prim算法”指的是一个在线编程竞赛题目,来源于普林斯顿开放在线课程(POJ)平台。该题目要求参赛者实现Prim算法,这是一种解决图论问题中寻找最小生成树的经典算法。最小生成树是在...
* 最小生成树算法:例如 Prim、Kruskal,例如 poj1789、poj2485、poj1258、poj3026。 * 拓扑排序:例如 poj1094。 * 二分图的最大匹配:例如 poj3041、poj3020。 * 最大流的增广路算法:例如 poj1459、poj3436。...
* 最小生成树算法:最小生成树算法是指计算图的最小生成树的算法,如 prim、kruskal。 * 拓扑排序:拓扑排序是指计算图的拓扑排序的算法,如 poj1094。 * 二分图的最大匹配:二分图的最大匹配是指计算二分图的最大...
2. **最小生成树**:Prim算法和Kruskal算法,用于构建图的最小生成树(poj1789, poj2485, poj1258, poj3026)。 3. **网络流**:Max-flow算法,用于解决最大流问题(poj1094)。 4. **拓扑排序**:解决有向无环图的...
- 最小生成树算法:如Prim算法和Kruskal算法,用于找出图中的最小生成树,如`poj1789, poj2485`。 - 拓扑排序:适用于有向无环图,用于确定任务的执行顺序,如`poj1094`。 - 二分图的最大匹配:如匈牙利算法,...
- **解释**:最小生成树算法主要包括Prim算法和Kruskal算法。 ##### (4) 拓扑排序 - **例题**:poj1094 - **解释**:拓扑排序是对有向无环图的一种排序方式,可以用来解决依赖关系的问题。 ##### (5) 匹配算法 - *...
Prim算法和Kruskal算法分别基于贪心策略和并查集数据结构,用于在带权图中找到连接所有顶点的最小总权重的树结构。 #### 拓扑排序 适用于有向无环图,帮助分析任务依赖关系,如poj1094所示。 #### 匹配算法 包括...
- POJ 1789、POJ 2485:Prim算法的具体应用。 - POJ 1258、POJ 3026:Kruskal算法的实际案例。 #### 字符串处理 - **题目示例**: - POJ 3349、POJ 3274:字符串匹配及Hash应用。 - POJ 2151、POJ 1840:利用...
- **最小生成树算法**:prim和kruskal算法,如poj1789,用于找到图的最小成本连接。 - **拓扑排序**:对有向无环图的排序,如poj1094。 - **二分图最大匹配**:匈牙利算法,如poj3041和poj3020,解决分配问题。 ...
- (poj1789, poj2485, poj1258, poj3026):介绍普里姆算法(Prim)和克鲁斯卡尔算法(Kruskal),用于寻找加权无向图的最小生成树。 4. **拓扑排序**: - (poj1094):适用于有向无环图(DAG)的一种排序方式,...
【poj 2485 Highways 测试数据】是一个编程竞赛题目,源自著名的在线算法竞赛平台POJ(Programming Online Judge)。此题目的主要目的是通过解决实际问题来考察参赛者的图论和算法设计能力,特别是涉及到最小生成树...
对于POJ第1861题,参赛者可能需要读取输入数据,构建一个加权图,然后应用Prim或Kruskal算法找出最小生成树,最后输出树中边的权重总和或者某种特定格式的树结构。解题过程可能涉及到错误处理、边界条件检查以及效率...
在编程竞赛中,POJ(Problemset Online Judge)是一个知名的在线判题系统,用于检验和提交程序解决问题的能力,而OI(OnlineJudge)是这类系统的统称。下面将对每个文件名中的题目和相关算法进行详细解释。 1. **P...
从给定的文件信息来看,这是一份关于POJ(Pat Online Judge)平台上的编程题目的分类汇总。POJ是北京大学设立的一个在线编程评测系统,提供了大量的编程题目供学习者练习,涵盖了各种算法和数据结构知识。下面将对这...