HDU-1598 find the most comfortable road
来源:互联网 发布:oracle数据库防火墙 编辑:程序博客网 时间:2024/06/01 15:45
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
题意
XX星人要从一个城市到达另外一个城市,他对舒适度要求很高,在乘坐过程中最高速度与最低速度的差越小舒适度越高,输入输出题目里已有详细介绍,
求最佳路线的舒适度最高速与最低速的差,如果起点和终点不能到达,则输出-1。
题解
本题考查并查集和贪心算法。因为要找XX星人从一个城市到另外一个城市的最高舒适度,这可以用并查集和贪心算法来实现,通过并查集找到不同的路使XX星人从一个城市直接或间接的到达另外一个城市,然后在通过贪心算法找到最小的最大速度与最小速度的差值。如果不能到达,则输出-1。
但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
题意
XX星人要从一个城市到达另外一个城市,他对舒适度要求很高,在乘坐过程中最高速度与最低速度的差越小舒适度越高,输入输出题目里已有详细介绍,
求最佳路线的舒适度最高速与最低速的差,如果起点和终点不能到达,则输出-1。
题解
本题考查并查集和贪心算法。因为要找XX星人从一个城市到另外一个城市的最高舒适度,这可以用并查集和贪心算法来实现,通过并查集找到不同的路使XX星人从一个城市直接或间接的到达另外一个城市,然后在通过贪心算法找到最小的最大速度与最小速度的差值。如果不能到达,则输出-1。
#include<stdio.h>#include<string.h>#include<algorithm>using namespace std;#define INF 0x3f3f3f3fint n,m,flag,minn,f[1005];struct node{ int u; int v; int w;} q[1005];bool cmp(node a,node b) //按速度大小排序{ return a.w<b.w;}void init() //初始化{ int i; for(i=1; i<=n; i++) f[i]=i;}int getf(int v) //寻找祖先的递归函数{ if(f[v]==v) return v; else { f[v]=getf(f[v]); //路径压缩 return f[v]; }}int merge(int v,int u){ int t1,t2; t1=getf(v); t2=getf(u); if(t1!=t2) //判断输入的两个结点是否在同一个集合里 f[t2]=t1;}int main(){ while(~scanf("%d%d",&n,&m)) { int i,j,t,s,e; for(i=0; i<m; i++) scanf("%d%d%d",&q[i].u,&q[i].v,&q[i].w); sort(q,q+m,cmp); scanf("%d",&t); while(t--) { minn=INF; //每一次XX星人要从一个地方到另外一个地方都要把minn赋初值 scanf("%d%d",&s,&e); //输入起点和终点 for(i=0; i<m; i++) //从0开始,贪心算法 { init(); //每一次重新找路的时候都要f数组初始化 for(j=i; j<m; j++) { merge(q[j].u,q[j].v); if(getf(s)==getf(e)) //如果从起点到达了终点 { if(minn>q[j].w-q[i].w) minn=q[j].w-q[i].w; //更新最小值 } } } if(minn!=INF) printf("%d\n",minn); else printf("-1\n"); //表示不能从起点走到终点 } } return 0;}
阅读全文
0 0
- find the most comfortable road hdu 1598
- HDU-1598-find the most comfortable road
- hdu 1598 find the most comfortable road
- hdu 1598 find the most comfortable road
- HDU 1598 find the most comfortable road
- HDU 1598 find the most comfortable road
- hdu 1598 find the most comfortable road
- HDU 1598 find the most comfortable road
- hdu 1598 find the most comfortable road
- HDU 1598 find the most comfortable road
- hdu 1598 find the most comfortable road
- HDU 1598 find the most comfortable road
- hdu 1598 find the most comfortable road
- hdu 1598 find the most comfortable road
- HDU 1598 find the most comfortable road
- HDU 1598 ( find the most comfortable road )
- HDU 1598 find the most comfortable road
- hdu 1598 find the most comfortable road
- 1109. Group Photo (25)
- hibernate之注解开发(04)
- InteliJ IDEA引入servlet.api.jar不然引用request.Parameter()会报"找不到该方法"的错误
- mybatis基础之标签
- python安装使用
- HDU-1598 find the most comfortable road
- 风一更,雪一更,聒碎乡心梦不成,故园无此声。
- 【Java编程】数组反序
- 配置Sublime Test 3在控制台编译运行java,c,c++
- BZOJ 3714 [PA2014]Kuglarz Kruskal
- Oracle之char类型-yellowcong
- Android常用库
- 关于mybatis-generator配置文件解析失败的坑
- HTTP POST请求报文格式分析与Java实现文件上传