HDU4081 Qin Shi Huang's National Road System
先求最小生成树
再遍历每一对顶点,如果该顶点之间的边属于最小生成树,则剪掉这对顶点在最小生成树里的最长路径
否则直接剪掉连接这对顶点的边~
用prim算法求最小生成树最长路径的模板~
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<vector>
#include<cmath>
using namespace std;
const int maxn=;
const int inf=1e9;
double g[maxn][maxn],d[maxn],w[maxn];
int visit[maxn],N,S,P,pre[maxn];
double len[maxn][maxn];//表示点i,j在最小生成树上的最长路径
double c[maxn][maxn];
void init () {
for (int i=;i<maxn;i++)
for (int j=;j<maxn;j++)
g[i][j]=inf,c[i][j]=,len[i][j]=;
}
double prim (int s) {
fill (d,d+maxn,inf);
fill (visit,visit+maxn,);
for (int i=;i<=N;i++) pre[i]=i;
d[s]=;
double ans=;
for (int i=;i<=N;i++) {
int u=-,min=inf;
for (int j=;j<=N;j++)
if (!visit[j]&&d[j]<min) {
u=j;
min=d[j];
}
if (u==-) return -;
visit[u]=;
ans+=d[u];
if (pre[u]!=u) c[u][pre[u]]=c[pre[u]][u]=;
for (int v=;v<=N;v++)
if (!visit[v]&&g[u][v]!=inf&&g[u][v]<d[v]) {
d[v]=g[u][v];
pre[v]=u;
}
for (int v=;v<=N;v++)
if (visit[v]&&u!=v) len[u][v]=len[v][u]=max(len[pre[u]][v],d[u]);
}
return ans;
}
struct node {
double x,y;
}Node[maxn];
int main () {
int T;
scanf ("%d",&T);
while (T--) {
scanf("%d",&N);
for (int i=;i<=N;i++) scanf ("%lf %lf %lf",&Node[i].x,&Node[i].y,&w[i]);
init ();
for (int i=;i<=N;i++)
for (int j=i+;j<=N;j++)
g[i][j]=g[j][i]=sqrt((Node[i].x-Node[j].x)*(Node[i].x-Node[j].x)+(Node[i].y-Node[j].y)*(Node[i].y-Node[j].y));
double mst=prim();
double Max=;
for (int i=;i<=N;i++)
for (int j=i+;j<=N;j++)
if (!c[i][j]) Max=max(Max,(w[i]+w[j])/(mst-len[i][j]));
else Max=max(Max,(w[i]+w[j])/(mst-g[i][j]));
printf ("%.2f\n",Max);
}
return ;
}
HDU4081 Qin Shi Huang's National Road System的更多相关文章
- HDU4081 Qin Shi Huang's National Road System —— 次小生成树变形
题目链接:https://vjudge.net/problem/HDU-4081 Qin Shi Huang's National Road System Time Limit: 2000/1000 ...
- HDU4081 Qin Shi Huang's National Road System 2017-05-10 23:16 41人阅读 评论(0) 收藏
Qin Shi Huang's National Road System ...
- HDU4081:Qin Shi Huang's National Road System (任意两点间的最小瓶颈路)
Qin Shi Huang's National Road System Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/3 ...
- hdu-4081 Qin Shi Huang's National Road System(最小生成树+bfs)
题目链接: Qin Shi Huang's National Road System Time Limit: 2000/1000 MS (Java/Others) Memory Limit: ...
- HDU4081 Qin Shi Huang's National Road System(次小生成树)
枚举作为magic road的边,然后求出A/B. A/B得在大概O(1)的时间复杂度求出,关键是B,B是包含magic road的最小生成树. 这么求得: 先在原图求MST,边总和记为s,顺便求出M ...
- hdu4081 Qin Shi Huang's National Road System 次小生成树
先发发牢骚:图论500题上说这题是最小生成树+DFS,网上搜题解也有人这么做.但是其实就是次小生成树.次小生成树完全当模版题.其中有一个小细节没注意,导致我几个小时一直在找错.有了模版要会用模版,然后 ...
- hdu 4081 Qin Shi Huang's National Road System (次小生成树)
Qin Shi Huang's National Road System Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/3 ...
- UValive 5713 Qin Shi Huang's National Road System
Qin Shi Huang's National Road System Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/3 ...
- hdu 4081 Qin Shi Huang's National Road System (次小生成树的变形)
题目:Qin Shi Huang's National Road System Qin Shi Huang's National Road System Time Limit: 2000/1000 M ...
随机推荐
- Web渗透测试思路整理
信息收集: 域名/IP 子域名列表 whois: 注册地址,注册人,联系方式等 whois反查: 同ip有哪些站点(旁注),同一个注册人注册了哪些域名 社工注册人信息 指纹识别: 操作系统及版本 数据 ...
- LaTeX 文字带边框
1.使用framed宏包 \usepackage{framed} 可以使用verb|...|和verbatim环境而不使用cprotect宏包的cprotect命令 \begin{framed} \v ...
- centos7修改xshell默认访问端口由22修改为62058
1.vim /etc/ssh/sshd_config 2.新加端口62058:Port 62058 3.重启sshd服务:systemctl restart sshd 4.将新加端口添加到防火墙并重启 ...
- Allegro 串扰仿真
利用于博士的那个电路板,看一下cadence软件的串扰仿真,我们选取3跟信号线,见下图. U6.N3-R36-U7.56 U6.P3-R36-U7.54 U6.P2-R36-U7.53 下面启动sig ...
- 一次 utf-8 bom引起的问题
同事代码新增加了功能,推到服务器上,意外导致登录失败,回退到之前的版本上,可以正常使用. 这次只上传了 route.php 文件,系统登录失败. 随后使用kdiff3对比了两版本的route.php文 ...
- Spring整合Mybatis错误解决方案
ERROR:java.lang.AbstractMethodError: org.mybatis.spring.transaction.SpringManagedTransactionFactory. ...
- MIPS中的syscall用法
- JS 抖动函数封装
原生JS实现封装的抖动函数框架 <style> ul{ margin-top: 100px; } li { float: left; margin-left: 20px; position ...
- C#常见几种集合比较
1. ArrayList 1.1 ArrayList是一个特殊数组,通过添加和删除元素就可以动态改变数组的长度. ArrayList集合相对于数组的优点:支持自动改变大小,可以灵活的插入元素,可以灵活 ...
- 安装node.js后npm不可用
安装node.js后npm不可用 最近要用Vue做项目,依赖node.js,于是按官网下载安装node 下载地址:https://nodejs.org/en/download/ 网上也有很多教程这里就 ...