Find the most comfortable road(HDU-1598)
Problem Description
XX星有许多城市,城市之间通过一种奇怪的高速公路SARS(Super Air Roam Structure---超级空中漫游结构)进行交流,每条SARS都对行驶在上面的Flycar限制了固定的Speed,同时XX星人对 Flycar的“舒适度”有特殊要求,即乘坐过程中最高速度与最低速度的差越小乘坐越舒服 ,(理解为SARS的限速要求,flycar必须瞬间提速/降速,痛苦呀 ),但XX星人对时间却没那么多要求。
要你找出一条城市间的最舒适的路径。(SARS是双向的)。
Input
输入包括多个测试实例,每个实例包括:
第一行有2个正整数n (1<n<=200)和m (m<=1000),表示有N个城市和M条SARS。
接下来的行是三个正整数StartCity,EndCity,speed,表示从表面上看StartCity到EndCity,限速为speedSARS。speed<=1000000
然后是一个正整数Q(Q<11),表示寻路的个数。
接下来Q行每行有2个正整数Start,End, 表示寻路的起终点。
Output
每个寻路要求打印一行,仅输出一个非负整数表示最佳路线的舒适度最高速与最低速的差。如果起点和终点不能到达,那么输出-1。
Sample Input
4 4
1 2 2
2 3 4
1 4 1
3 4 2
2
1 3
1 2Sample Output
1
0
思路:并查集+贪心+kruskal,将路径升序排序, 然后依次枚举最小速度, 再寻找目标起点到目标终点的路径中的最大速度,为了使差更小,就要使最大速度尽量的小,按照kruskal算法从最小路径开始构造生成树,直到所连出的树含有起点和终点为止。
Source Program
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<string>
#include<cstdlib>
#include<queue>
#define INF 999999
#define N 201
#define MOD 1000000007
#define E 1e-12
using namespace std;
struct Node
{int x;int y;int w;
}a[5*N];
int n,m;
int father[N];
int Find(int x)
{int r=x;while(r!=father[r])r=father[r];int i=x,j;while(i!=r){j=father[i];father[i]=r;i=j;}return r;
}
bool cmp(Node a,Node b)
{return a.w<b.w;
}
int main()
{while(scanf("%d%d",&n,&m)!=EOF){for(int i=0;i<m;i++)scanf("%d%d%d",&a[i].x,&a[i].y,&a[i].w);sort(a,a+m,cmp);int t;scanf("%d",&t);for(int i=0;i<t;i++){int s,e;scanf("%d%d",&s,&e);int MST=INF;for(int j=0;j<m;j++){for(int i=1;i<=n;i++)father[i]=i;for(int k=j;k<m;k++){int x=Find(a[k].x);int y=Find(a[k].y);if(x!=y)father[x]=y;if(Find(s)==Find(e)){MST=min(MST,a[k].w-a[j].w);break;}}}if(MST!=INF)printf("%d\n",MST);elseprintf("-1\n");}}return 0;
}
Find the most comfortable road(HDU-1598)相关推荐
- 有源汇有上下界最大流/最小流 配题(HDU 3157)
因为是有源汇所以设源点为 s,汇点为 t. 有源汇有上下界最大流: 连接一条 t 指向 s 的边,容量为 INF. 通过上述步骤,现在图变成了无源汇网络. 引入超级源点 S,超级汇点 T. 连接一条 ...
- 最大表示法--环形字符串最大字典序(HDU 5442)
http://acm.hdu.edu.cn/showproblem.php?pid=5442 问题概述:n个字符围成一个环,请从这个环中找出字典序最大的长度为n的字符串,输出它的起始点和方向(0顺1 ...
- HDU2019多校第二场 1009(HDU 6599) I Love Palindrome String(回文树(自动机)+manacher)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6599 解题思路: 回文自动机求每个本质不同的子串出现的次数,同时记录每个节点i代表的回文串第一次出现的 ...
- S-Nim (HDU 1536)组合博弈SG多组游戏
S-Nim 题目链接 Problem Description Arthur and his sister Caroll have been playing a game called Nim for ...
- BestCoder25 1001.Harry and Magical Computer(hdu 5154) 解题报告
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5154 题目意思:有 n 门 processes(编号依次为1,2,...,n),然后给出 m 种关系: ...
- Ant Trip(HDU 3018)---多笔画问题
题目链接 题目描述 Ant Country consist of N towns.There are M roads connecting the towns. Ant Tony,together w ...
- (HDU - 1847)Good Luck in CET-4 Everybody!(博弈)
题目链接:Good Luck in CET-4 Everybody! - HDU 1847 - Virtual Judge (ppsucxtt.cn) 题目是中文的,我在这就不翻译题意了. 先说一种打 ...
- 美素数(HDU 4548)(打表,简化时间复杂度)
相信大家都喜欢美的东西,让我们一起来看看美素数吧. 问题是这样的:一个十进制数,如果是素数,而且它的各位数字和也是素数,则称之为"美素数",如29,本身是素数,而且2+9 = 11 ...
- 【数位DP】B-number(HDU 3652)
B-number HDU 3652 题目大意: 有一个数n,求出1~n中含'13'且能被13整除的数有多少个 输入样例 13 100 200 1000 输出样例 1 1 2 2 解题思路: 用数位DP ...
最新文章
- PhoneGap 1.5版本 cordova.js 简析 3(转)
- Spring-方法注入lookup、方法替换MethodReplacer接口
- arc下内存泄漏的解决小技巧
- OpenCV使用pthread实现多线程加速处理图像(C++)
- java算法之冒泡排序
- android操作系统+流量,为什么我的安卓操作系统走这么多流量?
- python oop求三角形面积公式_Python OOP --action()函数
- HiveQL学习笔记(二):Hive基础语法与常用函数
- C#.NET快速开发框架-企业版V4.0截图打包下载
- linux nginx 443端口被占用,Nginx拒绝监听端口443(示例代码)
- JavaScript if...else 语句
- 74HC595原理图”中“ RCLK SRCLK SRCLR”是什么意思
- 学习平面设计的三个入门步骤
- win10黑屏Duilib资源加载失败
- 最短路径之Bellman-Ford
- 多元相关分析与多元回归分析
- pl/sql基础知识—定义并使用变量
- 搜索战火重燃,夸克升级个人云服务做网盘的逻辑是什么?
- 利用dcmtk工具查询PACS,找到同一患者两次以上的检查的数据
- RGB和HSV相互转换