Time Limit: 2000MS   Memory Limit: 65536K
Total Submissions: 25165   Accepted: 7751

Description

The Department of National Defence (DND) wishes to connect several northern outposts by a wireless network. Two different communication technologies are to be used in establishing the network: every outpost will have a radio transceiver and some outposts will in addition have a satellite channel.
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

The
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

For
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
题意:国防部(DND)要用无线网络连接北部几个哨所。有两种不同的通信技术被用于建立网络:每一个哨所有一个无线电收发器,一些哨所将有一个卫星频道。 
 
 任何两个有卫星信道的哨所可以通过卫星进行通信,而不管他们的位置。同时,当两个哨所之间的距离不超过D时可以通过无线电通讯,D取决于对收发器的功率。功率越大,D也越大,但成本更高。出于采购和维修的方便,所有哨所的收发器必须是相同的;也就是说,D值对每一个哨所相同。 
你的任务是确定收发器的D的最小值。每对哨所间至少要有一条通信线路(直接或间接)。
 
思路:有 m 个哨所需要m-1条边连接,s颗卫星可以代替s-1条边,用卫星代替最长的边

 #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)的更多相关文章

  1. POJ 2349 Arctic Network (最小生成树)

    Arctic Network 题目链接: http://acm.hust.edu.cn/vjudge/contest/124434#problem/F Description The Departme ...

  2. POJ 2349 Arctic Network(最小生成树中第s大的边)

    题目链接:http://poj.org/problem?id=2349 Description The Department of National Defence (DND) wishes to c ...

  3. POJ 2349 Arctic Network(贪心 最小生成树)

    题意: 给定n个点, 要求修p-1条路使其连通, 但是现在有s个卫星, 每两个卫星可以免费构成连通(意思是不需要修路了), 问修的路最长距离是多少. 分析: s个卫星可以代替s-1条路, 所以只要求最 ...

  4. POJ 2349 Arctic Network(最小生成树,第k大边权,基础)

    题目 /*********题意解说——来自discuss——by sixshine**************/ 有卫星电台的城市之间可以任意联络.没有卫星电台的城市只能和距离小于等于D的城市联络.题 ...

  5. 2349 Arctic Network(中文版)

    试题描述: 国防部希望通过无线网络连接几个北方前哨基地. 在建立网络时将使用两种不同的通信技术:每个前哨基站都将拥有无线电收发器,另外还有一些前哨卫星通道. 任何带卫星频道的两个前哨都可以通过卫星进行 ...

  6. poj 2349 Arctic Network

    http://poj.org/problem?id=2349 Arctic Network Time Limit: 2000MS   Memory Limit: 65536K Total Submis ...

  7. POJ 2349 Arctic Network (最小生成树)

    Arctic Network Time Limit:2000MS     Memory Limit:65536KB     64bit IO Format:%I64d & %I64u Subm ...

  8. 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 ...

  9. POJ 2349 Arctic Network(最小生成树+求第k大边)

    题目链接:http://poj.org/problem?id=2349 题目大意:有n个前哨,和s个卫星通讯装置,任何两个装了卫星通讯装置的前哨都可以通过卫星进行通信,而不管他们的位置. 否则,只有两 ...

随机推荐

  1. linux 三大利器 grep sed awk 正则表达式

    正则表达式目标 正则表达式单字符: 特定字符 范围字符:单个字符[ ] :代表查找单个字符,括号内为字符范围 数字字符:[0-9],[259] 查找 0~9 和 2.5 .9 中的任意一个字符 小写字 ...

  2. 数据链路层 点对点协议 PPP

    点对点协议 PPP 一. PPP 协议应满足的需求 简单.提供不可靠的数据报服务,比IP协议简单,不需要纠错,不需要序号,不需要流量控制. 工作方式:接收方每收到一个帧就进行CRC校验,如正确就接受该 ...

  3. Python语言特性

    1 Python的函数参数传递 看两个例子: a = 1 def fun(a): a = 2 fun(a) print a # 1 a = [] def fun(a): a.append(1) fun ...

  4. Selenium2+python自动化

    一.打开网站1.第一步:从selenium里面导入webdriver模块2.打开Firefox浏览器(Ie和Chrome对应下面的)3.打开百度网址二.设置休眠1.由于打开百度网址后,页面加载需要几秒 ...

  5. (六)Linux下的压缩命令

    ======================================================================================== .zip格式的压缩和解 ...

  6. C++Primer学习笔记《三》

    数组名事实上就是一个常指针,指向数组元素中第一个的地址,在程序中假设要用指针遍历数组,不能直接用数组名来自增或自减.由于它是常量,一般先把数组名保存一份同类型的指针,然后再用这个指针来自增或是自减来实 ...

  7. My97datepicker使用方法

    My97DatePicker是一款非常灵活好用的日期控件.使用非常简单. 1.下载My97DatePicker组件包 2.在页面中引入该组件js文件:     <script type=&quo ...

  8. mongodb3.2副本集配置

    网上的资料太乱了,等弄好了再看官网才发现官网写的最清晰和简洁 推荐官网的副本集配置:https://docs.mongodb.com/manual/tutorial/deploy-replica-se ...

  9. Spring Boot 构建一个 RESTful Web Service

    1  项目目标: 构建一个 web service,接收get 请求 http://localhost:8080/greeting 响应一个json 结果: {"id":1,&qu ...

  10. 安卓 通过www读取Application.persistentDataPath

    今天在读取Application.persistentDataPath路径下的图片时,在前面加上“file:///” 例如 #if UNITY_EDITOR || UNITY_STANDALONE r ...