题目链接:http://poj.org/problem?id=2349

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
 /*
问题
题目理解起来有一定的难度,理解了就是水题一道。怎么理解呢?就是一遍一遍的读。
重要的是每个顶点会配备一个无线接收器,其中一些顶点还会配备一个卫星信道。现在给出卫星信道的个数和顶点个数以及每个顶点的坐标,
问使用卫星通道和接收器使得接收器的工作范围尽可能的小,因为卫星通道可以直接通信。 解题思路
刚开始读题的时候以为要消去s条边,结果计算样例的结果是200,其实是卫星信道的个数,换句换说每两个卫星信道才可以消去一条边。 处
理每两点之间的边,使用克鲁斯卡尔算法一条一条的加入,直至加入的这条边是第p-s条边时结束。因为一共需要p-1条边而使用s个卫星接收
信道可以使s-1条边免费,所以只需p-1-(s-1)即p-s条边即可。
*/
#include<cstdio>
#include<math.h>
#include<algorithm> using namespace std;
struct NODE{
int x,y;
}node[]; struct EDGE{
int u,v;
double w;
}edge[]; int cmp(struct EDGE a,struct EDGE b){
return a.w<b.w;
}
int f[];
int merge(int v,int u);
int getf(int v);
int main()
{
int t,s,p,i,j,k;
scanf("%d",&t);
while(t--)
{
scanf("%d%d",&s,&p);
for(i=;i<=p;i++){
scanf("%d%d",&node[i].x,&node[i].y);
} k=;
for(i=;i<=p-;i++){
for(j=i+;j<=p;j++){
edge[k].u=i;
edge[k].v=j;
edge[k].w=sqrt(1.0*(node[i].x-node[j].x)*(node[i].x-node[j].x) +
1.0*(node[i].y-node[j].y)*(node[i].y-node[j].y));
}
}
sort(edge,edge+k,cmp); /*for(i=0;i<k;i++)
printf("%lf\n",edge[i].w);*/ for(i=;i<=p;i++)
f[i]=i; int cou=;
for(i=;i<k;i++){
if(merge(edge[i].u,edge[i].v)){
//printf("选择了第%d这条边%.2lf\n",i,edge[i].w);
cou++;
}
if(cou == p-s){
printf("%.2lf\n",edge[i].w);
break;
}
}
}
return ;
} int getf(int v)
{
return f[v]==v?v:f[v]=getf(f[v]);
} int merge(int v,int u)
{
int t1,t2;
t1=getf(v);
t2=getf(u);
if(t1 != t2){
f[t2]=t1;
return ;
}
return ;
}

POJ 2349 Arctic Network(最小生成树中第s大的边)的更多相关文章

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

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

  2. poj 2349 Arctic Network(最小生成树的第k大边证明)

    题目链接: http://poj.org/problem?id=2349 题目大意: 有n个警戒部队,现在要把这n个警戒部队编入一个通信网络, 有两种方式链接警戒部队:1,用卫星信道可以链接无穷远的部 ...

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

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

  4. poj 2349 Arctic Network 最小生成树,求第k大条边

    题目抽象出来就是有一些告诉坐标的通信站,还有一些卫星,这些站点需要互相通信,其中拥有卫星的任意两个站可以不用发射器沟通,而所有站点的发射器要都相同,但发射距离越大成本越高. 输入的数据意思: 实例个数 ...

  5. poj 2349 Arctic Network

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

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

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

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

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

  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(贪心 最小生成树)

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

随机推荐

  1. python 读取hive数据

    话不多说,直接上代码 from pyhive import hivedef pyhive(hql): conn = hive.Connection(host='HiveServer2 host', p ...

  2. Gitlab 赋予某台机器git clone的权限 Deploy key

    开发项目CI(持续化部署)的时候,需要赋予jeckins所在的机器从gitlab远程仓库克隆代码到本地的权限. 之前我们基本都是通过管理gitlab某个项目的成员的方式,管理gitlab的权限. 但是 ...

  3. unidbgrid列排序

    unidbgrid列排序 1)指定列的.sortable:=true; 2)unidbgrid.columnsort事件添加如下代码: if SameText(Column.FieldName, 'I ...

  4. 背水一战 Windows 10 (43) - C# 7.0 新特性

    [源码下载] 背水一战 Windows 10 (43) - C# 7.0 新特性 作者:webabcd 介绍背水一战 Windows 10 之 C# 7.0 新特性 介绍 C# 7.0 的新特性 示例 ...

  5. EF使用MySql DBFirst产品的问题总结

    一.实体数据模型向导->新建连接->更改数据源  找不到MySql Batabase选项. 解决:需求安装以下两个插件(mysql官网都可以找到)(注意版本,后面会讲到) 1.MySql ...

  6. “全栈2019”Java多线程第三十四章:超时自动唤醒被等待的线程

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java多 ...

  7. Python中super()的用法

    参考链接:https://www.cnblogs.com/shengulong/p/7892266.html super 是用来解决多重继承问题的,直接用类名调用父类方法在使用单继承的时候没问题,但是 ...

  8. 面向对象三大特性编写面向对象程序,self到底是谁

    一.函数式编程和面向对象的对比 面向过程:根据业务逻辑从上到下写垒代码: 函数式:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可: 面向对象:对函数进行分类和封装,让开发“更快更好更强. ...

  9. Vue的声明周期

    以下简单介绍,以自己的理解进行分析.如有不好,请大牛勿喷!!!!!! new Vue() 创建 Vue 实例 beforeCreate(){}: 第一生命周期 表示实例完全创建出来,此函数执行是,da ...

  10. Linux 学习错误点整理之网络配置

    本人是一名实习生,最近在学习Linux,在实操的过程中还是遇到了一些问题,所以想记录下来,供自己以后复习,也希望能给跟我一样的菜鸟的人带来一点点帮助. 我用的是VMware Workstation P ...