博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
题解:无线通讯网
阅读量:4631 次
发布时间:2019-06-09

本文共 1680 字,大约阅读时间需要 5 分钟。

qwq

跑最小生成树

一共n个电话,所以相当于最小生成树里删去最大的n-1的边

所以答案即为最小生成树的第n大边

prim或者kruskal都行

这是prim

1 #include
2 #include
3 #include
4 #include
5 using namespace std; 6 int x[505], y[505]; 7 int p, n, now, cnt; 8 double ans[505], dis[505][505], d[505]; 9 bool used[505];10 bool cmp(double a,double b){11 return a>b;12 }13 int main(){14 scanf("%d%d",&p,&n);15 for(int i=1; i<=n; i++){16 scanf("%d%d",&x[i],&y[i]);17 d[i]=0x3f3f3f3f;18 }19 for(int i=1; i<=n; i++){20 for(int j=1; j
d[j] && !used[j]){34 minn=d[j];35 now=j;36 }37 }38 used[now]=true;39 ans[++cnt]=minn;40 for(int j=1; j<=n; j++){41 if(!used[j]){42 d[j]=min(d[j], dis[now][j]);43 }44 }45 }46 sort(ans+1, ans+n+1, cmp);//按照从大到小排序47 printf("%.2lf", ans[p]);48 return 0;49 }

这是kruskal,来自于pushinl

1 #include
2 #include
3 #include
4 #include
5 #include
6 #define N 501 7 using namespace std; 8 int f[N], px[N], py[N]; 9 double ans[N];10 int n, k, num, cnt;11 struct data{12 int x, y;13 double d;14 }b[N*N];15 double dis(int ax, int ay, int bx, int by){16 return sqrt((ax-bx)*(ax-bx)+(ay-by)*(ay-by));17 }18 int find(int x){19 if(f[x]!=x)f[x]=find(f[x]);20 return f[x];21 }22 inline bool cmp(const data&a, const data&b){23 return a.d

话说luogu数据真的是十分水了orzzz

 

转载于:https://www.cnblogs.com/Aze-qwq/p/9886047.html

你可能感兴趣的文章
vh属性-- 一个永远垂直居中的弹出框
查看>>
LAMP集群项目三 配置业务服务器
查看>>
《Unity_API解析》 第五章 Mathf类
查看>>
计算器
查看>>
批处理备份
查看>>
To the Max(矩阵压缩)
查看>>
数组的学习+冒泡排序
查看>>
C程序设计语言----第1章 导言(一)
查看>>
asp.net文件下载
查看>>
APK IPA --------------- iis7如何添加mime类型支持所有后缀名文件下载的方法(解决特殊后缀文件无法下载的问题)...
查看>>
python学习笔记(二十六)经典类和新式类的区别
查看>>
Tarjan缩点
查看>>
PHP 常用的header头部定义汇总(转)
查看>>
Leetcode 437. Path Sum III
查看>>
Leetcode 1020. Number of Enclaves
查看>>
第六百二十三天 how can I坚持
查看>>
编译错误, 哈哈 本来想偷懒的
查看>>
xp绑定多ip
查看>>
Ruby
查看>>
剖析Mysql的InnoDB索引
查看>>