poj 2349 Arctic Network 最小生成树,求第k大条边
题目抽象出来就是有一些告诉坐标的通信站,还有一些卫星,这些站点需要互相通信,其中拥有卫星的任意两个站可以不用发射器沟通,而所有站点的发射器要都相同,但发射距离越大成本越高。
输入的数据意思:
实例个数
卫星个数 站点个数
每个站点的坐标
输出的意思:
发射器最小是多少,保留两位小数
注意事项:
其中卫星数量少于站点,存边的数组下标从0开始的,还有一个坑坑,输出用的.2f,而喜欢用.2lf的我错了四发才发现....
代码如下:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
#include <iostream>
#include <algorithm>
#include <climits>
#include <queue> using namespace std; const int N = ;
double INF = 0x3f3f3f3f3f3f;
double cost[N][N],used[N];
bool visit[N];
double lowc[N];
int c;
bool cmp(double a,double b)
{
return a>b;
}
void Prim(int n)
{
memset(visit,false,sizeof(visit));
visit[] = true;
for(int i = ; i < n; i++) lowc[i] = cost[][i];
for(int i = ; i < n; i++)
{
double minc = 1.0*INF;
int p = -;
for(int j = ; j < n; j++)
{
if(!visit[j] && minc - lowc[j] > 1e-)
{
minc = lowc[j];
p = j;
}
}
visit[p] = true;
used[c++]= minc;
for(int j = ; j < n; j++)
{
if(!visit[j] && lowc[j] - cost[p][j] > 1e-)
lowc[j] = cost[p][j];
}
}
}
struct nodes
{
double x,y;
}point[N]; int main(void)
{
int i,j,t,m,n;
scanf("%d",&t);
while(t--)
{
scanf("%d %d",&m,&n);
for(i = ; i < n; i++)
scanf("%lf %lf",&point[i].x,&point[i].y);
for(i = ; i < n; i++)
for(j = ; j < n; j++)
cost[i][j] = cost[j][i] = INF; for(i = ; i < n; i++)
for(j = i + ; j <n; j++)
{
double temp = sqrt( (point[i].x-point[j].x)*(point[i].x-point[j].x) +(point[i].y-point[j].y)*(point[i].y-point[j].y));
cost[i][j] = cost[j][i] = temp;
}
memset(used,,sizeof(used));
c = ;
Prim(n);
sort(used,used+c,cmp);
printf("%.2f\n",used[m-]);//.2f神坑
}
return ;
}
poj 2349 Arctic Network 最小生成树,求第k大条边的更多相关文章
- POJ 2349 Arctic Network(最小生成树+求第k大边)
题目链接:http://poj.org/problem?id=2349 题目大意:有n个前哨,和s个卫星通讯装置,任何两个装了卫星通讯装置的前哨都可以通过卫星进行通信,而不管他们的位置. 否则,只有两 ...
- poj 2349 Arctic Network(最小生成树的第k大边证明)
题目链接: http://poj.org/problem?id=2349 题目大意: 有n个警戒部队,现在要把这n个警戒部队编入一个通信网络, 有两种方式链接警戒部队:1,用卫星信道可以链接无穷远的部 ...
- POJ 2349 Arctic Network (最小生成树)
Arctic Network Time Limit:2000MS Memory Limit:65536KB 64bit IO Format:%I64d & %I64u Subm ...
- poj 2349 Arctic Network
http://poj.org/problem?id=2349 Arctic Network Time Limit: 2000MS Memory Limit: 65536K Total Submis ...
- POJ 2985 Treap平衡树(求第k大的元素)
这题也能够用树状数组做,并且树状数组姿势更加优美.代码更加少,只是这个Treap树就是求第K大元素的专家--所以速度比較快. 这个也是从那本红书上拿的模板--自己找了资料百度了好久,才理解这个Trea ...
- POJ 2349 Arctic Network (最小生成树)
Arctic Network 题目链接: http://acm.hust.edu.cn/vjudge/contest/124434#problem/F Description The Departme ...
- Poj 2349 Arctic Network 分类: Brush Mode 2014-07-20 09:31 93人阅读 评论(0) 收藏
Arctic Network Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 9557 Accepted: 3187 De ...
- POJ 2349 Arctic Network(最小生成树,第k大边权,基础)
题目 /*********题意解说——来自discuss——by sixshine**************/ 有卫星电台的城市之间可以任意联络.没有卫星电台的城市只能和距离小于等于D的城市联络.题 ...
- POJ 2349 Arctic Network(最小生成树中第s大的边)
题目链接:http://poj.org/problem?id=2349 Description The Department of National Defence (DND) wishes to c ...
随机推荐
- ThinkPHP 数据更新
ThinkPHP的数据更新操作包括更新数据和更新字段方法. 直线电机厂家 更新数据 更新数据使用save方法,例如: $User = M("User"); // 实例化User对象 ...
- php判断一个值是否在一个数组中,区分大小写-也可以判断是否在键中
function in_array_case($value,$array){ return in_array(strtolower($value),array_map('strtolower',$ar ...
- 安装elasticsearch-head插件
安装node ###下载 wget https://nodejs.org/dist/v10.15.3/node-v10.15.3-linux-x64.tar.xz ### 解压 tar xvf nod ...
- 转:linux下的c/c++开发
源地址:http://zhidao.baidu.com/question/131261452.html 我就是做LINUX下的C开发的. 准确的说,LINUX下C才是主要的开发语言,但是写应用程序还是 ...
- Activiti配置实例以及Spring集成配置
public class TestDB { public static void main(String[] args) { //1. 创建Activiti配置对象的实例 ProcessEngineC ...
- Nginx是什么?
Nginx是什么? Nginx ("engine x") 是一个高性能的 HTTP 和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器.一直纳闷这个X是怎么来 ...
- 2018-8-10-VisualStudio-使用三个方法启动最新-C#-功能
title author date CreateTime categories VisualStudio 使用三个方法启动最新 C# 功能 lindexi 2018-08-10 19:16:52 +0 ...
- HBase功能组件
- Quota- Linux必学的60个命令
1.作用 quota命令用来显示磁盘使用情况和限制情况,使用权限超级用户. 2.格式 quota [-g][-u][-v][-p] 用户名 组名 3.参数 -g:显示用户所在组的磁盘使用限制. -u: ...
- Vue:$route 和 $router 的区别
参考: https://uzshare.com/view/788446 https://router.vuejs.org/zh/ $route 是“路由信息对象”,包括 path,params,has ...