poj 2349 Arctic Network(prime)
| Time Limit: 2000MS | Memory Limit: 65536K | |
| Total Submissions: 25165 | Accepted: 7751 |
Description
Any two outposts with a satellite channel can communicate via the
satellite, regardless of their location. Otherwise, two outposts can
communicate by radio only if the distance between them does not exceed
D, which depends of the power of the transceivers. Higher power yields
higher D but costs more. Due to purchasing and maintenance
considerations, the transceivers at the outposts must be identical; that
is, the value of D is the same for every pair of outposts.
Your job is to determine the minimum D required for the
transceivers. There must be at least one communication path (direct or
indirect) between every pair of outposts.
Input
first line of input contains N, the number of test cases. The first
line of each test case contains 1 <= S <= 100, the number of
satellite channels, and S < P <= 500, the number of outposts. P
lines follow, giving the (x,y) coordinates of each outpost in km
(coordinates are integers between 0 and 10,000).
Output
each case, output should consist of a single line giving the minimum D
required to connect the network. Output should be specified to 2 decimal
points.
Sample Input
1
2 4
0 100
0 300
0 600
150 750
Sample Output
212.13
任何两个有卫星信道的哨所可以通过卫星进行通信,而不管他们的位置。同时,当两个哨所之间的距离不超过D时可以通过无线电通讯,D取决于对收发器的功率。功率越大,D也越大,但成本更高。出于采购和维修的方便,所有哨所的收发器必须是相同的;也就是说,D值对每一个哨所相同。
你的任务是确定收发器的D的最小值。每对哨所间至少要有一条通信线路(直接或间接)。
#include <iostream>
#include <cmath>
#include <algorithm>
#include <cstring>
#include <cstdio>
using namespace std;
#define N 510 const double M=1e12;//定义一个大值
int p,s; struct dot //哨站结点
{
double x,y;
}d[N]; double map[N][N];
double rank[N],dst[N];//rank放最小生成树的各边长,dst放各点到MST的最近距离
int vis[N]; double dist(int i,int j)//求两点距离
{
double x,y;
x=d[i].x-d[j].x;
y=d[i].y-d[j].y; return sqrt(x*x+y*y);
} void init()
{
int i,j; memset(map,,sizeof(M));
for (i=;i<p;i++)//初始化图
{
for (j=;j<p;j++)
{
if (i==j)
{
map[i][j]=;
} else
{
map[i][j]=map[j][i]=dist(i,j);
}
}
} memset(vis,,sizeof(vis));
memset(dst,,sizeof(dst));
} //bool cmp(int i,int j)
//{
// if (rank[i]<rank[j])
// {
// return true;
// }
// return false;
//} void findans()
{
int i,j;
sort(rank,rank+p-);//按增序排列,注意排序范围为rank+p-1,因为MST只有p-1条边
printf("%.2f\n",rank[p-s-]);// (p-1)-(s-1)-1,因为序号从0开始 // for (i=0;i<p;i++)
// {
// for (j=0;j<p;j++)
// {
// printf("%10.2f",map[i][j]);
// }
// printf("\n");
// }
// printf("\n");
// for (i=0;i<p-1;i++)
// {
// printf("%10.2f",rank[i]);
// }
} void prime()
{
int cnt=,k,j,point,i;
double min; vis[]=;//把0点放入MST
for (i=;i<p;i++)//初始化dst
{
dst[i]=map[i][];
} for (i=;i<p;i++)//找距MST最近的点
{
min=M;
for (j=;j<p;j++)
{
if (vis[j]==&&min>dst[j])
{
min=dst[j];
point=j;
}
} // if (min==M)
// {
// break;
// } vis[point]=;
rank[cnt++]=min; for (k=;k<p;k++)//更新各点到MST的最小距离
{
if (vis[k]==&&dst[k]>map[k][point])
{
dst[k]=map[k][point];
}
}
}
findans();
} int main()
{
int i,n,j;
double x,y; scanf("%d",&n);
for (i=;i<n;i++)
{
scanf("%d%d",&s,&p); for (j=;j<p;j++)
{
scanf("%lf%lf",&d[j].x,&d[j].y);
} init();
prime();
} return ;
}
poj 2349 Arctic Network(prime)的更多相关文章
- POJ 2349 Arctic Network (最小生成树)
Arctic Network 题目链接: http://acm.hust.edu.cn/vjudge/contest/124434#problem/F Description The Departme ...
- POJ 2349 Arctic Network(最小生成树中第s大的边)
题目链接:http://poj.org/problem?id=2349 Description The Department of National Defence (DND) wishes to c ...
- POJ 2349 Arctic Network(贪心 最小生成树)
题意: 给定n个点, 要求修p-1条路使其连通, 但是现在有s个卫星, 每两个卫星可以免费构成连通(意思是不需要修路了), 问修的路最长距离是多少. 分析: s个卫星可以代替s-1条路, 所以只要求最 ...
- POJ 2349 Arctic Network(最小生成树,第k大边权,基础)
题目 /*********题意解说——来自discuss——by sixshine**************/ 有卫星电台的城市之间可以任意联络.没有卫星电台的城市只能和距离小于等于D的城市联络.题 ...
- 2349 Arctic Network(中文版)
试题描述: 国防部希望通过无线网络连接几个北方前哨基地. 在建立网络时将使用两种不同的通信技术:每个前哨基站都将拥有无线电收发器,另外还有一些前哨卫星通道. 任何带卫星频道的两个前哨都可以通过卫星进行 ...
- poj 2349 Arctic Network
http://poj.org/problem?id=2349 Arctic Network Time Limit: 2000MS Memory Limit: 65536K Total Submis ...
- POJ 2349 Arctic Network (最小生成树)
Arctic Network Time Limit:2000MS Memory Limit:65536KB 64bit IO Format:%I64d & %I64u Subm ...
- 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大边)
题目链接:http://poj.org/problem?id=2349 题目大意:有n个前哨,和s个卫星通讯装置,任何两个装了卫星通讯装置的前哨都可以通过卫星进行通信,而不管他们的位置. 否则,只有两 ...
随机推荐
- MapReduce Design Patterns(chapter 2 (part 3))(四)
Inverted Index Summarizations Pattern Description 反向索引模式在MapReduce分析中经常作为一个例子.我们将会讨论我们要创建的term跟标识符之间 ...
- H5 签到功能
Introduce(介绍) 用户签到的H5例子(css+jquery,无图片),由于网上找的的用户签到例子都不好,要不就是好多图片组成的,要不就大量冗余代码,所以特意做了个签到界面(移动端). Use ...
- php给图片加文字
在图片上加文字是论坛,博客,新闻网站上最喜欢用的功能,防止盗图.这里看看代码是如何实现的. 首先还是upload_image.php这个文件,注意这里的caption文本框中输入的内容最终会写到图片上 ...
- 今天开始每天一点ffmpeg知识。千里之行 。
今天开始每天一点ffmpeg知识.千里之行 .
- HTTP协议图--HTTP 报文实体
1. HTTP 报文实体概述 HTTP 报文结构 大家请仔细看看上面示例中,各个组成部分对应的内容. 接着,我们来看看报文和实体的概念.如果把 HTTP 报文想象成因特网货运系统中的箱子,那么 H ...
- Python2.7 - IMOOC - 2
第三章 Python变量和数据类型 3-1.数据类型 在Python中,能够直接处理的数据类型有以下几种: 整数 Python可以处理任意大小的整数,当然包括负整数,表示方法和数学上的写法一模一样,十 ...
- 020.2.3 math类
内容:一个数的最小整数,平方,随机数其他数学上常用的,去API里面找些对象试一下,在Java.lang包里面 Math.ceil()返回一个大于这个小数的最小整数,比如12.56156,返回13 Ma ...
- BZOJ 1041 圆上的整点 数学
题目链接: https://www.lydsy.com/JudgeOnline/problem.php?id=1041 题目大意:求一个给定的圆(x^2+y^2=r^2),在圆周上有多少个点的坐标是整 ...
- [emerg]: getpwnam(“nginx”) failed
[root@localhost nginx-1.11.2]# /usr/local/nginx/sbin/nginx nginx: [emerg] getpwnam("nginx" ...
- docker-4-镜像
是什么 镜像是一种轻量级.可执行的独立软件包,用来打包软件运行环境和基于运行环境开发的软件, 它包含运行某个软件所需的所有内容,包括代码.运行时.库.环境变量和配置文件. 1.UnionFS(联合文件 ...