题意:

秦始皇修路,已知n个城市的坐标以及该城市的人口数,修路的费用是两个城市之间的欧几里得距离,其中可以有一条路不用花费代价但是要求这条路连接的两个城市的人口之和A/B尽量大,其中B是修路的总费用。

输入t组数据

输入n城市个数

输入n行x,y,z表示坐标和人口数

输出A/B.

代码:

//类似次小生成树的处理方法,先求出最小生成树值ans,枚举要选的边u-v,ans减去u-v路径中的最大权值之后比较比值大小。
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
using namespace std;
const double inf=10000007.0;
int t,n,vis[1010],pre[1010];
double maxl[1010][1010],dis[1010],x[1010],y[1010],w[1010],mp[1010][1010];
double Prim(){memset(maxl,0,sizeof(maxl));for(int i=0;i<n;i++){dis[i]=mp[0][i];vis[i]=0;pre[i]=0;}vis[0]=1;double ans=0;for(int i=1;i<n;i++){double minl=inf;int sta=-1;for(int j=0;j<n;j++){if(!vis[j]&&dis[j]<minl){minl=dis[j];sta=j;}}if(sta==-1) return -1;vis[sta]=1;ans+=minl;for(int j=0;j<n;j++){if(vis[j]&&j!=sta) maxl[sta][j]=maxl[j][sta]=max(maxl[pre[sta]][j],dis[sta]);else if(!vis[j]&&dis[j]>mp[sta][j]){dis[j]=mp[sta][j];pre[j]=sta;}}}return ans;
}
double Smst(double ans){double tmp=0;for(int i=0;i<n-1;i++){for(int j=i+1;j<n;j++){tmp=max(tmp,(w[i]+w[j])/(ans-maxl[i][j]));}}return tmp;
}
int main()
{scanf("%d",&t);while(t--){scanf("%d",&n);for(int i=0;i<n;i++){scanf("%lf%lf%lf",&x[i],&y[i],&w[i]);mp[i][i]=0;for(int j=0;j<i;j++)mp[i][j]=mp[j][i]=sqrt((x[i]-x[j])*(x[i]-x[j])+(y[i]-y[j])*(y[i]-y[j]));}double ans=Prim();ans=Smst(ans);printf("%.2lf\n",ans);}return 0;
}

转载于:https://www.cnblogs.com/--ZHIYUAN/p/6753260.html

UVALive - 5713 最小生成树相关推荐

  1. UVALive - 5713 Qin Shi Huang's National Road System

    prim + 邻接矩阵储存两点间最大距离,然后枚举即可. #include<iostream> #include<string> #include<cstdio> ...

  2. Networking UVALive - 2515 (最小生成树,适合kruskal)

    Networking UVALive - 2515 kruskal模板题了,不解释 #include<algorithm> #include<iostream> #includ ...

  3. 最小生成树模板总结--PrimKruskal

    一.最小生成树:连通N个点的边权值总和最小的树. 二.时间复杂度 Prim算法:时间复杂度O(|V|2+|E|),O(|E|log|V|) Kruskal算法:时间复杂度O(|E|log|E|) 算法 ...

  4. DP UVALive 6506 Padovan Sequence

    题目传送门 /*题意:两行数字,相邻列一上一下,或者隔一列两行都可以,从左到右选择数字使和最大DP:状态转移方程:dp[i][j] = max (dp[i][j], dp[1-i][j-1] + a[ ...

  5. 数据结构与算法(7-3)最小生成树(普里姆(Prim)算法和克鲁斯卡尔(Kruskal)算法)

    目录 一.最小生成树简介 二.普里姆算法(Prim) 1.原理 2.存储 2-1.图顶点和权: 2-3. 最小生成树: 3.Prim()函数 3-1.新顶点入树 3-2.保留最小权 3-3. 找到最小 ...

  6. [kuangbin带你飞]专题六 最小生成树 L - 还是畅通工程 (简单最小生成树)

    L - 还是畅通工程 题目链接:https://vjudge.net/contest/66965#problem/L 题目: 某省调查乡村交通状况,得到的统计表中列出了任意两村庄间的距离.省政府&qu ...

  7. 图的算法专题——最小生成树

    概要: Prim算法 Kruskal算法 1.Prim算法 算法流程: (1)对图G(V,E)设置集合S来存放已被并入的顶点,然后执行n次(2)(3) (2)每次从未并入顶点集合中选择与集合S最近的一 ...

  8. 【BZOJ1016】【Luogu P4208】 [JSOI2008]最小生成树计数 最小生成树,矩阵树定理

    蛮不错的一道题,遗憾就遗憾在数据范围会导致暴力轻松跑过. 最小生成树的两个性质: 不同的最小生成树,相同权值使用的边数一定相同. 不同的最小生成树,将其都去掉同一个权值的所有边,其连通性一致. 这样我 ...

  9. Educational Codeforces Round 9 F. Magic Matrix 最小生成树

    F. Magic Matrix 题目连接: http://www.codeforces.com/contest/632/problem/F Description You're given a mat ...

  10. [vijos1234]口袋的天空最小生成树

    题目链接:https://vijos.org/p/1234 白天刚刚写完prim的算法,晚上就心血来潮的打了一道最小生成树的题 虽然有题解说可以用prim做,但是这道题明显是加最小的边,感觉krusk ...

最新文章

  1. 三年级优秀书籍推荐_西关小学书画比赛优秀作品展 绘画组(四)
  2. 关于strutsdemo实例的理解
  3. 国际域名也将列入监管范畴(本文转载自【易名中国】)
  4. Testing - 软件测试知识梳理 - 自动化测试
  5. java 内存数据库 sql_ssm+redis +Maven用于内存数据库 (No Sql)入门demo
  6. 语言中的petchar运用_还在担心你家孩子发音、语言问题?12个表现、3个预防是重点...
  7. Linux系统安装yum源报错256,Redhat Linux RHEL6配置本地YUM源及错误处理
  8. linux shell的sleep指定延时单位
  9. 手势三连拍是什么软件_超全的摆拍姿势,摆姿困难用户一定要学!
  10. 高并发编程系列:深入探讨ConcurrentHashMap
  11. ibook软件java_Ibookv1.11 塞班版下载 - 手机阅读 - 非凡手机软件
  12. kuangbin新模板错误
  13. 怎么看外文文献的影响因子_如何查询外文期刊的影响因子?
  14. 阿里云 Aliplayer高级功能介绍(九):自动播放体验...
  15. 计算机交换机作用,交换机的作用与功能
  16. 【百练】1103Hangover宿醉(c语言)
  17. 什么是电脑pe系统?
  18. 社科院与杜兰大学金融管理硕士项目——苦练基本功是通向成功的必经之路
  19. Python决策树鸢尾花类别分类
  20. 用python绘制y=x,y=1+sinx,编写Python程序,使用numpy、pandas、matplotlib三个扩展库在一个画布中绘制4个子图.

热门文章

  1. mysql explain select_type
  2. Mysql 联合索引入门
  3. ORC 和 Parquet比较入门
  4. Python 访问限制 private public
  5. XII jenkins
  6. Windows Mobile Sensors API库的设计
  7. 在Android应用中实现Google搜索的例子
  8. CentOS 6.2安装配置pacemaker
  9. 迁移solaris ufs根文件系统至zfs根文件系统
  10. PHP设计模式——装饰器模式