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 2

Sample 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)相关推荐

  1. 有源汇有上下界最大流/最小流 配题(HDU 3157)

    因为是有源汇所以设源点为 s,汇点为 t. 有源汇有上下界最大流: 连接一条 t 指向 s 的边,容量为 INF. 通过上述步骤,现在图变成了无源汇网络. 引入超级源点 S,超级汇点 T. 连接一条 ...

  2. 最大表示法--环形字符串最大字典序(HDU 5442)

    http://acm.hdu.edu.cn/showproblem.php?pid=5442 问题概述:n个字符围成一个环,请从这个环中找出字典序最大的长度为n的字符串,输出它的起始点和方向(0顺1 ...

  3. HDU2019多校第二场 1009(HDU 6599) I Love Palindrome String(回文树(自动机)+manacher)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6599 解题思路: 回文自动机求每个本质不同的子串出现的次数,同时记录每个节点i代表的回文串第一次出现的 ...

  4. S-Nim (HDU 1536)组合博弈SG多组游戏

    S-Nim 题目链接 Problem Description Arthur and his sister Caroll have been playing a game called Nim for ...

  5. BestCoder25 1001.Harry and Magical Computer(hdu 5154) 解题报告

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5154 题目意思:有 n 门 processes(编号依次为1,2,...,n),然后给出 m 种关系: ...

  6. Ant Trip(HDU 3018)---多笔画问题

    题目链接 题目描述 Ant Country consist of N towns.There are M roads connecting the towns. Ant Tony,together w ...

  7. (HDU - 1847)Good Luck in CET-4 Everybody!(博弈)

    题目链接:Good Luck in CET-4 Everybody! - HDU 1847 - Virtual Judge (ppsucxtt.cn) 题目是中文的,我在这就不翻译题意了. 先说一种打 ...

  8. 美素数(HDU 4548)(打表,简化时间复杂度)

    相信大家都喜欢美的东西,让我们一起来看看美素数吧. 问题是这样的:一个十进制数,如果是素数,而且它的各位数字和也是素数,则称之为"美素数",如29,本身是素数,而且2+9 = 11 ...

  9. 【数位DP】B-number(HDU 3652)

    B-number HDU 3652 题目大意: 有一个数n,求出1~n中含'13'且能被13整除的数有多少个 输入样例 13 100 200 1000 输出样例 1 1 2 2 解题思路: 用数位DP ...

最新文章

  1. PhoneGap 1.5版本 cordova.js 简析 3(转)
  2. Spring-方法注入lookup、方法替换MethodReplacer接口
  3. arc下内存泄漏的解决小技巧
  4. OpenCV使用pthread实现多线程加速处理图像(C++)
  5. java算法之冒泡排序
  6. android操作系统+流量,为什么我的安卓操作系统走这么多流量?
  7. python oop求三角形面积公式_Python OOP --action()函数
  8. HiveQL学习笔记(二):Hive基础语法与常用函数
  9. C#.NET快速开发框架-企业版V4.0截图打包下载
  10. linux nginx 443端口被占用,Nginx拒绝监听端口443(示例代码)
  11. JavaScript if...else 语句
  12. 74HC595原理图”中“ RCLK SRCLK SRCLR”是什么意思
  13. 学习平面设计的三个入门步骤
  14. win10黑屏Duilib资源加载失败
  15. 最短路径之Bellman-Ford
  16. 多元相关分析与多元回归分析
  17. pl/sql基础知识—定义并使用变量
  18. 搜索战火重燃,夸克升级个人云服务做网盘的逻辑是什么?
  19. 利用dcmtk工具查询PACS,找到同一患者两次以上的检查的数据
  20. RGB和HSV相互转换

热门文章

  1. 爬虫小工具合集|不会编程也能爬数据
  2. pc css框架,PC端框架—semantic ui
  3. 手机APP的秘密,看的一清二楚!
  4. 没了IDE,你的Java项目还能Run起来吗~
  5. jbpm4.4表结构
  6. MNIST手写数字识别【Matlab神经网络工具箱】
  7. saltstack的简单安装和配置
  8. (八)JAVA springcloud ssm b2b2c多用户商城系统源码:配置中心服务化和高可用
  9. 图像模糊--快速均值滤波
  10. 从outside对ASA防火墙身后ACS4.x进行管理测试