题目https://www.luogu.org/problemnew/show/P1991

题意:有p个点的坐标,可以有s个点使得这s个点之间可以无限制通信。

要使所有点之间两两有通信的路径(可以是间接的),其中最长的一段通信路径是多长。

思路:最近都不好好看题。上一题没看清-1,这一题没看清精确到小数点两位,在干吗啊。

首先建图,然后找最小生成树里第p-s大的路径长度。

 #include<cstdio>
#include<cstdlib>
#include<map>
#include<set>
#include<cstring>
#include<algorithm>
#include<vector>
#include<cmath>
#include<stack>
#include<queue>
#include<iostream> #define inf 0x3f3f3f3f
using namespace std;
typedef long long LL;
typedef pair<int, int> pr; int s, n;
const int maxn = ;
struct node{
int x, y;
}nodes[maxn];
double g[maxn][maxn]; double dist(int i, int j)
{
return sqrt((nodes[i].x - nodes[j].x) * (nodes[i].x - nodes[j].x) + (nodes[i].y - nodes[j].y) * (nodes[i].y - nodes[j].y));
} bool vis[maxn];
double d[maxn];
vector<double>ans;
void prim(int x)
{
memset(d, 0x3f, sizeof(d));
d[x] = ;
vis[x] = true;
for(int i = ; i <= n; i++){
d[i] = g[x][i];
} for(int t = ; t < n; t++){
double min = inf;
int minid;
for(int i = ; i <= n; i++){
if(!vis[i] && d[i] < min){
min = d[i];
minid = i;
}
}
vis[minid] = true;
ans.push_back(min);
for(int i = ; i <= n; i++){
if(d[i] > g[minid][i]){
d[i] = g[minid][i];
}
}
}
} int main()
{
scanf("%d%d", &s, &n);
for(int i = ; i <= n; i++){
scanf("%d%d", &nodes[i].x, &nodes[i].y);
}
for(int i = ; i <= n; i++){
for(int j = i + ; j <= n; j++){
g[i][j] = g[j][i] = dist(i, j);
//printf("%lf\n", g[i][j]);
}
} prim();
sort(ans.begin(), ans.end());
printf("%.2lf\n", ans[n - s - ]);
return ;
}

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

  1. 洛谷P1991 无线通讯网

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

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

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

  3. 洛谷 P1991 无线通讯网

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

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

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

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

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

  6. 洛谷P1991 无线通讯网(最小生成树性质+连通块)

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

  7. 洛谷P1991无线通讯网[kruskal | 二分答案 并查集]

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

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

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

  9. Luogu P1991 无线通讯网

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

随机推荐

  1. js里typeof和instanceof和箭头表达式要注意的地方,以及其他

    如果学过类似C#这样的语言,然后定义两个类class Mu{}和class Ku{},那么显然typeof Mu != typeof Ku的,但是在js里则不是这样,对于Mu和Ku的对象进行typeo ...

  2. 《The Google File System》 笔记

    <The Google File System> 笔记 一.Introduction 错误是不可避免的,应当看做正常的部分而不是异常.因此需要设计持续监控,错误检查,容错,自动恢复的系统. ...

  3. php数组与数据栈相关函数

    php数组可以用栈的角度来操作,这其中包含了如下函数,array_pop(),array_push,array_shift(),array_unshift(). array_pop()函数 将数组的最 ...

  4. Scala 算法案例

    移除第一个负数之后的所有负数 // 构建数组 val a = ArrayBuffer[Int]() a += (1, 2, 3, 4, 5, -1, -3, -5, -9) // 每发现一个第一个负数 ...

  5. Oracle和SQL Server 用当前日期减去 '0001-01-01' 得出的天数不一致,相差2天,谁知道原因?

    Oracle和SQL Server 用当前日期减去 '0001-01-01' 得出的天数不一致,相差2天.求大佬科普

  6. libhura的建立

    libharu 是一个开源的导出pdf的库,在编译libharu需要用到zlib库和libpng库(libpng 依赖于zlib库).如果项目中不需要导出带有图片的pdf,可以将涉及到"pn ...

  7. linux 命令行 光标移动技巧等

    看一个真正的专家操作命令行绝对是一种很好的体验-光标在单词之间来回穿梭,命令行不同的滚动.在这里强烈建立适应GUI节目的开发者尝试一下在提示符下面工作.但是事情也不是那么简单,还是需要知道“如何去做” ...

  8. java对日开发常用语(词汇)总结

    日语 英语 中文 备注 並び順(ならびじゅん) order by 排序   項目(こうもく)                         field 字段,域                    ...

  9. Go part 7 反射,反射类型对象,反射值对象

    反射 反射是指在程序运行期间对程序本身进行访问和修改的能力,(程序在编译时,变量被转换为内存地址,变量名不会被编译器写入到可执行部分,在运行程序时,程序无法获取自身的信息) 支持反射的语言可以在程序编 ...

  10. PLSQL 设置 里面timestamp显示的格式

    转自: https://blog.csdn.net/dietime1943/article/details/52672813# PL/SQL下timestamp日期显示格式问题 现象: 日期检索出来显 ...