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 ...
随机推荐
- 删除表 (truncate 、delete 、drop)
来源:http://www.cnblogs.com/dieyaxianju/p/7238936.html 删除表中内容分为三种情况. 1.删除表中所有数据,但保留表结构(可用以下两个语句): trun ...
- 基于Android的在线播放器系统的设计与实现
文章结构: 1 引言 1.1系统的研究背景 现在的时代是互联网的时代,互联网高速发展的同时,无线网络也接入了互联网.社会的各个领域都已经被无线网络渗透.小的比如手机,电脑,电视.大的比如灯光系统,智能 ...
- Spring Cloud介绍
Spring Cloud中国社区博客 Spring Cloud发展到2016年,国内关注的人越来越多,但是相应学习交流的平台和材料比较分散,不利于学习交流,因此Spring Cloud中国社区应运而生 ...
- 12c的PDB创建DIRECTORY要注意与PATH_PREFIX的关系(ORA-65254)
在创建PDB过程中如果使用了带PATH_PREFIX的参数,意味着在创建DIRECTORY目录时需要指定相对路径,而不能指定其它绝对路径.来自博客园AskScuti 11g整库作为一个PDB迁移至阿里 ...
- Centos6.5安装Nmap、tcpdump、mysql、tomcat、靶场WAVSEP
nmap安装 输入命令如下: yum install nmap 安装完成后,输入nmap -h看是否安装成功. 安装tcpdump 安装tcpdump必须的库: yum install flex yu ...
- python3练习100题——011
原题链接:http://www.runoob.com/python/python-exercise-example11.html 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔 ...
- 【NOIP2001普及组】最大公约数和最小公倍数问题
P1029 最大公约数和最小公倍数问题 最大公约数用辗转相除法: 最小公倍数:两个数的乘积=他们的最大公约数*最小公倍数,既然两个数的乘积及其最大公约数已知,那么最小公倍数也可以求了. #includ ...
- c#窗体进度条
c#窗体进度条 //进度条的最大值 ; progressBar1.Maximum = Convert.ToInt32(a); ;i<progressBar1.Maximum;i++) { //进 ...
- IntelliJ IDEA 2017.3尚硅谷-----插件的使用
在 IntelliJ IDEA 的安装讲解中我们其实已经知道,IntelliJ IDEA 本身很多功能也都 是通过插件的方式来实现的.官网插件库:https://plugins.jetbrains.c ...
- VIM键盘映射 (Map)
http://www.pythonclub.org/linux/vim/map VIM键盘映射 (Map) 设置键盘映射 使用:map命令,可以将键盘上的某个按键与Vim的命令绑定起来.例如使用以下命 ...