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个卫星通讯装置,任何两个装了卫星通讯装置的前哨都可以通过卫星进行通信,而不管他们的位置. 否则,只有两 ...
随机推荐
- 克隆对象__clone()方法
有的时候我们需要在一个项目里面,使用两个或多个一样的对象,如果你使用“new”关键字重新创建对象的话,再赋值上相同的属性,这样做比较烦琐而且也容易出错,所以要根据一个对象完全克隆出一个一模一样的对象, ...
- Git在eclipse中的配置
1:git在eclipse中的配置 windows - >preferences->team->git->configuration 点击add Entry key值:输入 u ...
- 中间人攻击利用框架bettercap测试
0x00前言 上篇提到内网渗透很有趣,这次就从一款新工具说起: bettercap 0x01简介 bettercap可用来实现各种中间人攻击,模块化,便携.易扩展 0x02特点 提到中间人攻击,最知名 ...
- 015.2Condiction接口
Condiction对象能够让线程等待,也能够唤醒相应的线程,通过下面方法,具体看代码:await();signal();signalAll(); 使用步骤:1)创建锁2)通过锁拿到Condictio ...
- 2、Python文件操作工具 xlrd 工具
#打开excel文档workbook = xlrd.open_workbook('..\cye.xls',encoding_override='utf-8') #获取sheet页信息sheet = w ...
- BZOJ1042:[HAOI2008]硬币购物(DP,容斥)
Description 硬币购物一共有4种硬币.面值分别为c1,c2,c3,c4.某人去商店买东西,去了tot次.每次带di枚ci硬币,买si的价值的东西.请问每次有多少种付款方法. Input 第一 ...
- BZOJ3769:BST again(记忆化搜索DP)
Description 求有多少棵大小为n的深度为h的二叉树.(树根深度为0:左右子树有别:答案对1000000007取模) Input 第一行一个整数T,表示数据组数. 以下T行,每行2个整数n和h ...
- BZOJ1821:[JSOI2010]部落划分(并查集,二分)
Description 聪聪研究发现,荒岛野人总是过着群居的生活,但是,并不是整个荒岛上的所有野人都属于同一个部落,野人们总是拉帮结派形成属于自己的部落,不同的部落之间则经常发生争斗.只是,这一切都成 ...
- flask开启debug模式的两种方法、加载配置文件的两种方法、URL传参的四种方法
from flask import Flask app = Flask(__name__) # app.config.update(DEBUG=True)#开启debug模式 #加载配置文件方法一 # ...
- gdb tui中切换窗口
gdb的gui用法 调试代码的时候,只能看到下一行,每次使用list非常烦,不知道当前代码的context http://beej.us/guide/bggdb/#compiling 简单来说就是在 ...