HDU 1598 find the most comfortable road (并查集+贪心)
来源:互联网 发布:mac手游模拟器电脑版 编辑:程序博客网 时间:2024/06/15 19:02
find the most comfortable road
Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 6494 Accepted Submission(s): 2770
Problem Description
XX星有许多城市,城市之间通过一种奇怪的高速公路SARS(Super Air Roam Structure---超级空中漫游结构)进行交流,每条SARS都对行驶在上面的Flycar限制了固定的Speed,同时XX星人对 Flycar的“舒适度”有特殊要求,即乘坐过程中最高速度与最低速度的差越小乘坐越舒服 ,(理解为SARS的限速要求,flycar必须瞬间提速/降速,痛苦呀 ),
但XX星人对时间却没那么多要求。要你找出一条城市间的最舒适的路径。(SARS是双向的)。
但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, 表示寻路的起终点。
第一行有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 41 2 22 3 41 4 13 4 221 31 2
Sample Output
10
Author
ailyanlu
Source
HDU 2007-Spring Programming Contest - Warm Up (1)
Recommend
8600 | We have carefully selected several similar problems for you: 1217 1142 1385 1690 2722
思路:先把速度从小到大排序, 枚举最小速度, 寻找最大速度(用并查集判断两个点是否连通),最后取最小
#include<stdio.h>#include<string.h>#include<algorithm>#define INF 0xfffffffusing namespace std;int pre[1100];struct node{ int from,to,val;}t[110000];bool cmp(node a,node b){ return a.val<b.val;}int find(int x){ if(x==pre[x]) return x; return pre[x]=find(pre[x]);}void join(int x,int y){ int fx=find(x); int fy=find(y); pre[fx]=fy;}int main(){ int n,m,i,j,q,s,k,p; while(scanf("%d%d",&n,&m)!=EOF) { for(i=0;i<m;i++) { scanf("%d%d%d",&t[i].from,&t[i].to,&t[i].val); } sort(t,t+m,cmp); scanf("%d",&q); int min; while(q--) { int x,y; scanf("%d%d",&x,&y); min=INF; for(i=0;i<m;i++)//枚举最小速度 { for(k=1;k<=n;k++) pre[k]=k; for(j=i;j<m;j++)//寻找满足条件的最大速度 { join(t[j].from,t[j].to); if(find(x)==find(y))//判断是否连通 break; } if(j==m) break; if(min>t[j].val-t[i].val) min=t[j].val-t[i].val;//寻找最小值 } if(min==INF) printf("-1\n"); else printf("%d\n",min); } } return 0;}
0 0
- hdu 1598 find the most comfortable road(并查集+贪心)
- HDU:1598 find the most comfortable road(并查集+贪心)
- HDU 1598 find the most comfortable road (并查集+贪心)
- find the most comfortable road(并查集+贪心)
- hdu 1598 find the most comfortable road(并查集)
- hdu 1598 find the most comfortable road 并查集
- 【hdu】 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 贪心+并查集
- hdu1598 find the most comfortable road 并查集+贪心
- hdu1598,find the most comfortable road,并查集,贪心
- find the most comfortable road(hdu并查集+暴力)
- 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( 并查集)
- Android6.0系统获取不到蓝牙和wifi的真实MAC地址
- CSS——NO.2(CSS样式的基本知识)
- cocosCreator碰撞组件的知识点
- Uboot的移植中遇到的一些问题,及解决方法。
- uva11090
- HDU 1598 find the most comfortable road (并查集+贪心)
- Socket 与 WebSocket
- 非常全面的 Android Bitmap 知识点梳理
- 斐波那契博弈(Fibonacci Nim)
- 动态连通算法
- 删除项目里面所有.svn和.git 文件
- ffmpeg cross-compile
- Django Channels简明实践
- hdu 5802 Windows 10 (贪心+dfs)