题目描述

国防部计划用无线网络连接若干个边防哨所。2 种不同的通讯技术用来搭建无线网络;

每个边防哨所都要配备无线电收发器;有一些哨所还可以增配卫星电话。

任意两个配备了一条卫星电话线路的哨所(两边都ᤕ有卫星电话)均可以通话,无论

他们相距多远。而只通过无线电收发器通话的哨所之间的距离不能超过 D,这是受收发器

的功率限制。收发器的功率越高,通话距离 D 会更远,但同时价格也会更贵。

收发器需要统一购买和安装,所以全部哨所只能选择安装一种型号的收发器。换句话

说,每一对哨所之间的通话距离都是同一个 D。你的任务是确定收发器必须的最小通话距

离 D,使得每一对哨所之间至少有一条通话路径(直接的或者间接的)。

输入输出格式

输入格式:

从 wireless.in 中输入数据第 1 行,2 个整数 S 和 P,S 表示可安装的卫星电话的哨所

数,P 表示边防哨所的数量。接下里 P 行,每行两个整数 x,y 描述一个哨所的平面坐标

(x, y),以 km 为单位。

输出格式:

输出 wireless.out 中

第 1 行,1 个实数 D,表示无线电收发器的最小传输距离,㋮确到小数点后两位。

输入输出样例

输入样例#1:

  1. 2 4
  2. 0 100
  3. 0 300
  4. 0 600
  5. 150 750
输出样例#1:

  1. 212.13

说明

对于 20% 的数据:P = 2,S = 1

对于另外 20% 的数据:P = 4,S = 2

对于 100% 的数据保证:1 ≤ S ≤ 100,S < P ≤ 500,0 ≤ x,y ≤ 10000。

其实是最小生成树裸题,我竟然没做出来==!(还是我太蒟了)

题意已经比较明白了,跑最小生成树就行了。我们其实可以贪心地用那些开了外挂的卫星电话来代替最小生成树的最长的几条边,那么能代替几条呢?我们知道,如果有n个点,那生成树就有n-1条边,由于有p个点,每两个点连一下可以代替一条边,那么就可以p-1条边。于是我们求的最小长度就是最小生成树中的第n-p条边。

然后由于题目中给的是坐标,那么我们可以先预处理连一下边。

code

  1. #include<cstdio>
  2. #include<algorithm>
  3. #include<cmath>
  4.  
  5. using namespace std;
  6.  
  7. int s,p,tot,cnt,fa[],line[];
  8. struct node{
  9. double x,y;
  10. }point[];
  11. struct Vergil{
  12. int from,to;
  13. double val;
  14. }edge[];
  15.  
  16. double math_dis(double a,double b,double c,double d)
  17. {
  18. return sqrt((a-b)*(a-b)+(c-d)*(c-d));
  19. }
  20.  
  21. bool cmp(Vergil p,Vergil q)
  22. {
  23. return p.val<q.val;
  24. }
  25.  
  26. int getf(int x)
  27. {
  28. if(x==fa[x]) return x;
  29. else return fa[x]=getf(fa[x]);
  30. }
  31.  
  32. int main()
  33. {
  34. scanf("%d%d",&s,&p);
  35. for(int i=;i<=p;i++)
  36. scanf("%lf%lf",&point[i].x,&point[i].y);
  37. for(int i=;i<=p;i++)
  38. for(int j=;j<=p;j++)
  39. {
  40. if(i==j) continue;
  41. //连重了不要紧,跑kruskal的时候会跳过
  42. edge[++tot].val=math_dis(point[i].x,point[j].x,point[i].y,point[j].y);
  43. edge[tot].from=i,edge[tot].to=j;
  44. }
  45. sort(edge+,edge+tot+,cmp);
  46. for(int i=;i<=p;i++) fa[i]=i;
  47. for(int i=;i<=tot;i++)
  48. {
  49. int pp=getf(edge[i].from);
  50. int qq=getf(edge[i].to);
  51. if(pp==qq) continue;
  52. cnt++;fa[qq]=pp;line[cnt]=i;//还需要用line数组记录一下下标!
  53. if(cnt==p-s) break;
  54. }
  55. printf("%.2lf",edge[line[cnt]].val);
  56. return ;
  57. }

Luogu P1991 无线通讯网 【最小生成树】的更多相关文章

  1. Luogu P1991 无线通讯网

    P1991 无线通讯网 题目描述 国防部计划用无线网络连接若干个边防哨所.2 种不同的通讯技术用来搭建无线网络: 每个边防哨所都要配备无线电收发器:有一些哨所还可以增配卫星电话. 任意两个配备了一条卫 ...

  2. P1991 无线通讯网 最小生成树

    题目描述 国防部计划用无线网络连接若干个边防哨所.2 种不同的通讯技术用来搭建无线网络: 每个边防哨所都要配备无线电收发器:有一些哨所还可以增配卫星电话. 任意两个配备了一条卫星电话线路的哨所(两边都 ...

  3. 洛谷P1991 无线通讯网

    P1991 无线通讯网 170通过 539提交 题目提供者洛谷OnlineJudge 标签图论 难度普及+/提高 提交该题 讨论 题解 记录 最新讨论 怎么又炸了 为啥一直40!求解! UKE:inv ...

  4. 洛谷——P1991 无线通讯网

    P1991 无线通讯网 题目描述 国防部计划用无线网络连接若干个边防哨所.2 种不同的通讯技术用来搭建无线网络: 每个边防哨所都要配备无线电收发器:有一些哨所还可以增配卫星电话. 任意两个配备了一条卫 ...

  5. 洛谷 P1991 无线通讯网

    P1991 无线通讯网 题目描述 国防部计划用无线网络连接若干个边防哨所.2 种不同的通讯技术用来搭建无线网络: 每个边防哨所都要配备无线电收发器:有一些哨所还可以增配卫星电话. 任意两个配备了一条卫 ...

  6. 洛谷 P1991 无线通讯网 题解

    P1991 无线通讯网 题目描述 国防部计划用无线网络连接若干个边防哨所.2 种不同的通讯技术用来搭建无线网络: 每个边防哨所都要配备无线电收发器:有一些哨所还可以增配卫星电话. 任意两个配备了一条卫 ...

  7. P1991 无线通讯网

    P1991 无线通讯网 题目描述 国防部计划用无线网络连接若干个边防哨所.2 种不同的通讯技术用来搭建无线网络: 每个边防哨所都要配备无线电收发器:有一些哨所还可以增配卫星电话. 任意两个配备了一条卫 ...

  8. 洛谷P1991 无线通讯网【最小生成树】

    题目:https://www.luogu.org/problemnew/show/P1991 题意:有p个点的坐标,可以有s个点使得这s个点之间可以无限制通信. 要使所有点之间两两有通信的路径(可以是 ...

  9. 洛谷 P1991 无线通讯网 Label:最小生成树 || 二分

    题目描述 国防部计划用无线网络连接若干个边防哨所.2 种不同的通讯技术用来搭建无线网络: 每个边防哨所都要配备无线电收发器:有一些哨所还可以增配卫星电话. 任意两个配备了一条卫星电话线路的哨所(两边都 ...

随机推荐

  1. Spring4MVC 请求参数映射和Content-type

    目录 前言 不使用注解(不传则为null) 基本数据类型和日期类型 自定义类型POJO @PathVariable注解 @RequestParam 注解 @RequestBody注解 复杂对象Arra ...

  2. Spring MVC的Hello World例子

    以下内容引用自http://wiki.jikexueyuan.com/project/spring/mvc-framework/spring-mvc-hello-world-example.html: ...

  3. DTrace scripts for Mac OS X

    http://www.cnblogs.com/Proteas/p/3727297.html http://dtrace.org/blogs/brendan/2011/10/10/top-10-dtra ...

  4. B/S(WEB)系统中使用Activex插件调用扫描仪实现连续扫描并上传图像(IE文件扫描并自动上传)

    IE浏览器下使用Activex插件调用客户端扫描仪扫描文件并山传,可以将纸质档案(如合同.文件.资料等)扫描并将扫描图像保存到服务器,可以用于合同管理.档案管理等. 通过插件方式调用扫描仪扫描并获取图 ...

  5. Desert King (poj 2728 最优比率生成树 0-1分数规划)

    Language: Default Desert King Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 22113   A ...

  6. [Bash] Search for Text with `grep`

    In this lesson, we’ll use grep to find text patterns. We’ll also go over some of the flags that grep ...

  7. SQL FULL OUTER JOIN 关键字

    SQL FULL OUTER JOIN 关键字 SQL FULL OUTER JOIN 关键字 FULL OUTER JOIN 关键字只要左表(table1)和右表(table2)其中一个表中存在匹配 ...

  8. 【LeetCode-面试算法经典-Java实现】【066-Plus One(加一)】

    [066-Plus One(加一)] [LeetCode-面试算法经典-Java实现][全部题目文件夹索引] 原题 Given a non-negative number represented as ...

  9. 【转】PLSQL_标准删除的方式Delete/Drop/Truncate区别和比较

  10. 游戏server设计的一些感悟

    Author:Echo Chen(陈斌) Email:chenb19870707@gmail.com Blog:Blog.csdn.net/chen19870707 Date:September 30 ...