【UVA534】Frogger 最小瓶颈路
题目大意:给定一张 N 个点的完全图,求 1,2 号节点之间的一条最小瓶颈路。
题解:可知,最小瓶颈路一定存在于最小生成树(最小瓶颈树)中。因此,直接跑克鲁斯卡尔算法,当 1,2 号节点在同一个联通块时,即可停止算法,并输出答案即可。
代码如下
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>
using namespace std;
const int maxn=210;
const int maxe=4e4+10;
struct node{double x,y;}p[maxn];
struct edge{
	int from,to;double w;
	edge(int from=0,int to=0,double w=0):from(from),to(to),w(w){}
}e[maxe];
int tot,n,kase,f[maxn];
bool cmp(const edge& x,const edge& y){return x.w<y.w;}
inline double get_dis(int a,int b){
	return sqrt((p[a].x-p[b].x)*(p[a].x-p[b].x)+(p[a].y-p[b].y)*(p[a].y-p[b].y));
}
void read_and_parse(){
	tot=0;
	for(int i=1;i<=n;i++)scanf("%lf%lf",&p[i].x,&p[i].y);
	for(int i=1;i<=n;i++)
		for(int j=i+1;j<=n;j++)
			e[++tot]=edge(i,j,get_dis(i,j));
}
int find(int x){
	return x==f[x]?x:f[x]=find(f[x]);
}
double kruskal(int from,int to){
	sort(e+1,e+tot+1,cmp);
	for(int i=1;i<=n;i++)f[i]=i;
	for(int i=1;i<=tot;i++){
		int x=find(e[i].from),y=find(e[i].to);
		if(x==y)continue;
		f[x]=y;
		if(find(from)==find(to))return e[i].w;
	}
	return 0;
}
void solve(){
	printf("Scenario #%d\n",++kase);
	printf("Frog Distance = %.3lf\n\n",kruskal(1,2));
}
int main(){
	while(scanf("%d",&n)&&n){
		read_and_parse();
		solve();
	}
	return 0;
}
												
											【UVA534】Frogger 最小瓶颈路的更多相关文章
- 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的路径在树上是唯一的,答案就是这 ...
 - 【uva 534】Frogger(图论--最小瓶颈路 模版题)
		
题意:平面上有N个石头,给出坐标.一只青蛙从1号石头跳到2号石头,使路径上的最长便最短.输出这个值.(2≤N≤200) 解法:最小瓶颈树.而由于这题N比较小便可以用2种方法:1.最短路径中提到过的Fl ...
 - UVALive 5713 Qin Shi Huang's National Road System秦始皇修路(MST,最小瓶颈路)
		
题意: 秦始皇要在n个城市之间修路,而徐福声可以用法术位秦始皇免费修1条路,每个城市还有人口数,现要求徐福声所修之路的两城市的人口数之和A尽量大,而使n个城市互通需要修的路长B尽量短,从而使得A/B最 ...
 - UVA 11354 Bond(最小瓶颈路+倍增)
		
题意:问图上任意两点(u,v)之间的路径上,所经过的最大边权最小为多少? 求最小瓶颈路,既是求最小生成树.因为要处理多组询问,所以需要用倍增加速. 先处理出最小生成树,prim的时间复杂度为O(n*n ...
 - 【20181102T2】飞越行星带【智商题+最小瓶颈路】
		
题面 [正解] 一眼不可做啊 --相当于求路线上穿过的点最小距离最大 最小最大--二分啊 现在相当于给一个直径,要判断这个直径是否能从左边穿到右边 我们可以在距离不超过直径的点连一条边,\(y=0\) ...
 - UVa 11354 邦德(最小瓶颈路+LCA)
		
https://vjudge.net/problem/UVA-11354 题意: 有n个城市m条道路,每条道路有一个危险系数.先在有若干个询问,要求找到一条从s到t的路,使得途径所有边的最大危险系数最 ...
 - 【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 ...
 
随机推荐
- 2017-2018-2 20155230《网络对抗技术》实验5:MSF基础应用
			
基础问题回答 用自己的话解释什么是exploit,payload,encode. exploit 就是运行该模块吧,在msf的模块中配置好各项属性后exploit一下就开始运行使用该模块了 paylo ...
 - mfc 动态为控件添加事件1
			
知识点: 认识窗口过程 GetWindowLong SetWindowLong 为动态控件绑定事件 一.获取窗口过程 二.设置新窗口过程 .书写一个新窗口过程函数 窗口过程格式 LRESULT CAL ...
 - libgdx学习记录10——Particle粒子
			
粒子对制作画面特效很有用,可以使用Particle Editor进行自行编辑粒子效果,跟图片一起生成.p粒子文件,然后导入到程序中使用. 本文所用的粒子效果是基于其自带的demo的. 实例: pack ...
 - CS50.1
			
1,GUI,graphical user interface,图形用户界面 2.VB,visual basic,微软开发的一种程序语言 3,BIT,binary digit 比特 4,byte 5,8 ...
 - java过滤器Filter笔记
			
一.Filter简介 Filter也称之为过滤器,它是Servlet技术中最激动人心的技术之一,WEB开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp,Servlet, 静 ...
 - 解决Docker容器时区及时间不同步的问题
			
前几天在测试应用的功能时,发现存入数据库中的数据create_time或者update_time字段总是错误,其他数据都是正常的,只有关于时间的字段是错误的. 进入linux服务器中查看,也没有任何的 ...
 - Boyer and Moore Fast majority vote algorithm(快速选举算法)
			
问题来来自于leetcode上的一道题目,https://leetcode.com/problems/majority-element/,大意是是找出一个数组中,出现次数超过一个半的数字,要求是O(n ...
 - 35道Redis面试题
			
1.什么是redis? Redis 是一个基于内存的高性能key-value数据库. 2.Reids的特点 Redis本质上是一个Key-Value类型的内存数据库,很像memcached,整个数 ...
 - Final发布 文案+美工展示
			
此作业要求参见:https://edu.cnblogs.com/campus/nenu/2018fall/homework/2476项目地址:https://coding.net/u/wuyy694/ ...
 - kafka学习总结之kafka简介
			
kafka是一个分布式,基于subscribe-publish的消息系统 特性:高吞吐量.低延迟.可扩展性.持久性(消息持久化到本地磁盘).可靠性.容错性(n个副本,允许n-1个节点失败).高并发(支 ...