luogu题解 UVA534 【Frogger--最小瓶颈边
题目链接:
Update 6.18
多点对最短瓶颈路算法:https://www.cnblogs.com/Rye-Catcher/p/9194967.html
思路:
题意就是叫你求\(1,2\)点之间的最小瓶颈路,何谓最小瓶颈路呢?
对于无向图\(u,v\)两个顶点,若两个顶点有多条路径,设第\(i\)条路径经过边权最大的边权为\(w[i]\),那么\(u,v\)两点的最小瓶颈路就是\(min(w[i])\)
我们用Kruskal,将边权从小到大排序后构建MST,若加入两点\(u,v\)且\(fa[u]=1\) \(fa[v]=2\),则此时的边权\(edge(u,v)\)就是最小瓶颈路
为了上述处理过程我们用带权路径压缩并查集,\(rk[1]\) \(rk[2]\)设为很大的数(暴力的数),以保证生成树中两点的祖先都是\(1\)或\(2\)
同时注意UVA很多题目的特点:毒瘤输出
代码
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <algorithm>
#include <cmath>
#include <cctype>
#include <cstring>
#define ri register int
#define ll long long
using namespace std;
const int maxn=205;
struct Edge{
int u,v;
double dis;
bool operator<(const Edge & b)const{
return dis<b.dis;
}
}edge[1926081];
int n;
int fa[maxn],rk[maxn];
int px[maxn],py[maxn];
int get(int x){
if(fa[x]!=x)fa[x]=get(fa[x]);
return fa[x];
}
inline void merge(int x,int y){
if(rk[x]>rk[y]){
fa[y]=x;
rk[x]+=rk[y];
}
else
{
fa[x]=y;
rk[y]+=rk[x];
}
return ;
}
int main(){
int u,v,e,t=0;
while(scanf("%d",&n)!=EOF){
if(!n)break;t++;
int cnt=0,tot=0;
for(ri i=1;i<=n;i++){
fa[i]=i,rk[i]=0;
scanf("%d %d",&px[i],&py[i]);
for(ri j=1;j<i;j++){
double d=sqrt((double)(px[i]-px[j])*(px[i]-px[j])+(double)(py[i]-py[j])*(py[i]-py[j]));
edge[++tot].u=i,edge[tot].v=j;
edge[tot].dis=d;
}
}
rk[1]=rk[2]=1926817;
sort(edge+1,edge+1+tot);
for(ri i=1;i<=tot;i++){
u=edge[i].u,v=edge[i].v;
u=get(u),v=get(v);
if(u!=v){
cnt++;
if((u==1&&v==2)||(u==2&&v==1)){
printf("Scenario #%d\n",t);
printf("Frog Distance = %.3lf\n\n",edge[i].dis);
//printf("%.3lf\n",edge[i].dis);
break;
}
else{
merge(u,v);
}
}
if(cnt==n-1)break;
}
memset(edge,0,sizeof(edge));
}
return 0;
}
luogu题解 UVA534 【Frogger--最小瓶颈边的更多相关文章
- 【UVA534】Frogger 最小瓶颈路
题目大意:给定一张 N 个点的完全图,求 1,2 号节点之间的一条最小瓶颈路. 题解:可知,最小瓶颈路一定存在于最小生成树(最小瓶颈树)中.因此,直接跑克鲁斯卡尔算法,当 1,2 号节点在同一个联通块 ...
- poj 2253 Frogger 最小瓶颈路(变形的最小生成树 prim算法解决(需要很好的理解prim))
传送门: http://poj.org/problem?id=2253 Frogger Time Limit: 1000MS Memory Limit: 65536K Total Submissi ...
- 最小瓶颈路 Uva 534 Frogger
说明:关于Uva的题目,可以在vjudge上做的,不用到Uva(那个极其慢的)网站去做. 最小瓶颈路:找u到v的一条路径满足最大边权值尽量小 先求最小生成树,然后u到v的路径在树上是唯一的,答案就是这 ...
- POJ 2253 Frogger【最短路变形/最小生成树的最大权/最小瓶颈树/A到B多条路径中的最小的最长边】
Freddy Frog is sitting on a stone in the middle of a lake. Suddenly he notices Fiona Frog who is sit ...
- 【uva 534】Frogger(图论--最小瓶颈路 模版题)
题意:平面上有N个石头,给出坐标.一只青蛙从1号石头跳到2号石头,使路径上的最长便最短.输出这个值.(2≤N≤200) 解法:最小瓶颈树.而由于这题N比较小便可以用2种方法:1.最短路径中提到过的Fl ...
- 【UVA10816】Travel in Desert (最小瓶颈路+最短路)
UVA10816 Travel in Desert 题目大意 沙漠中有一些道路,每个道路有一个温度和距离,要求s,t两点间的一条路径,满足温度最大值最小,并且长度最短 输入格式 输入包含多组数据. 每 ...
- 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 ...
- P1396 营救(最小瓶颈路)
题目描述 “咚咚咚……”“查水表!”原来是查水表来了,现在哪里找这么热心上门的查表员啊!小明感动的热泪盈眶,开起了门…… 妈妈下班回家,街坊邻居说小明被一群陌生人强行押上了警车!妈妈丰富的经验告诉她小 ...
- CF600 div2 F.Cheap Robot(思维+最短路+最小瓶颈路)
最开始啃这题的时候我还是个不会$lca$的人,看代码看的没有一点头绪,现在趁着寒假补了很多关于图论的知识点,回头在看这题还是有很多值得学习的地方. Solution 1 (offline): 原题解: ...
随机推荐
- 20191114-4 Beta发布用户使用报告
20191114-4 Beta发布用户使用报告 此作业要求参见:https://edu.cnblogs.com/campus/nenu/2019fall/homework/10007 组名:胜利点 组 ...
- LeetCode 36. 有效的数独(Valid Sudoku)
题目描述 判断一个 9x9 的数独是否有效.只需要根据以下规则,验证已经填入的数字是否有效即可. 数字 1-9 在每一行只能出现一次. 数字 1-9 在每一列只能出现一次. 数字 1-9 在每一个以粗 ...
- Vue -3:单文件组件
在很多 Vue 项目中,我们使用 Vue.component 来定义全局组件,紧接着用 new Vue({ el: '#container '}) 在每个页面内指定一个容器元素. 这种方式在很多中小规 ...
- Runtime 源码阅读
Runtime 属性说明 /** * 每一个 Java 应用程序都有一个关联的运行时对象 * * @author unascribed * @see java.lang.Runtime#getRunt ...
- ubuntu14.04+安卓7.1(全志源码)+openjdk-8编译
题记:编译花了将近4小时,所以编译源码是很费时的哦,可以在编译的时候可以学习其他的知识 编译环境准备 软件:WorkStation10 系统:ubuntu14.04 内存:8G 处理器:4个 磁盘大小 ...
- Appium移动自动化测试(三)之元素定位
实验简介 做过UI自动化(web自动化, 移动自动化)的同学都会知道, 除去框架的选型和搭建以外, 落到实处的对元素进行定位就成了最重要的技能. 做过UI自动化的同学会知道, 对页面元素的定位方式有8 ...
- 小D课堂 - 零基础入门SpringBoot2.X到实战_第14节 高级篇幅之SpringBoot多环境配置_59、SpringBoot多环境配置介绍和项目实战
笔记 1.SpringBoot多环境配置介绍和项目实战(核心知识) 简介:SpringBoot介绍多环境配置和使用场景 1.不同环境使用不同配置 例如数据库配置,在开发的时候, ...
- Python中将(字典,列表等)变量格式化成字符串输出
比如原始的List变量的值是这种: [{"]}] 而想要将其输出为带缩进的,树状的,很漂亮的效果,那么可以通过这样的方法: import json #demoDictList is the ...
- docker批量删除容器、镜像(转载)
1.删除所有容器 docker rm `docker ps -a -q` 2.删除所有镜像 docker rmi `docker images -q` 3.按条件删除镜像 没有打标签 docker r ...
- GMM-EM实验结果