find the most comfortable road HDU
来源:互联网 发布:淘宝账号如何绑定手机 编辑:程序博客网 时间:2024/06/07 02:38
find the most comfortable road
XX星有许多城市,城市之间通过一种奇怪的高速公路SARS(Super Air Roam Structure---超级空中漫游结构)进行交流,每条SARS都对行驶在上面的Flycar限制了固定的Speed,同时XX星人对 Flycar的“舒适度”有特殊要求,即乘坐过程中最高速度与最低速度的差越小乘坐越舒服 ,(理解为SARS的限速要求,flycar必须瞬间提速/降速,痛苦呀 ),
但XX星人对时间却没那么多要求。要你找出一条城市间的最舒适的路径。(SARS是双向的)。
但XX星人对时间却没那么多要求。要你找出一条城市间的最舒适的路径。(SARS是双向的)。
第一行有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, 表示寻路的起终点。
4 41 2 22 3 41 4 13 4 221 31 2
10
思路:这个题我一直没懂,后来问了同学才
明白,主要运用贪心和并查集,先用排序,
再用并查集合并,并且用两层for循环,每一
条边都尝试一下,具体的代码中有解释。
#include<stdio.h>#include<algorithm>using namespace std;#define INF 0x3f3f3f3fint n,a[1000],m;int min(int t1,int t2){ return t1<t2?t1:t2;}struct note{ int x; int y; int w;} Q[10000];bool cmp(note t1,note t2){ return t1.w<t2.w;}void print(){ for(int i=1; i<=n; i++) a[i]=-1;}int find(int x){ if(a[x]==-1) return x; return a[x]=find(a[x]);}void merge(int x,int y){ int tx=find(x); int ty=find(y); if(tx!=ty) a[tx]=ty;}int main(){ while(~scanf("%d %d",&n,&m)) { for(int i=0; i<m; i++) scanf("%d %d %d",&Q[i].x,&Q[i].y,&Q[i].w); sort(Q,Q+m,cmp); int t,ans,a,b; scanf("%d",&t); while(t--) { scanf("%d %d",&a,&b); ans=INF; for(int i=0; i<m; i++) //外层循环,尝试每一条变 { print(); //初始化 a[]数组。 for(int j=i; j<m; j++) //从i条边开始 { merge(Q[j].x,Q[j].y); //合并 if(find(a)==find(b)) //查找a,b,是否联通 { ans=min(Q[j].w-Q[i].w,ans); //更新最小的差值 break; } } } if(ans!=INF) printf("%d\n",ans); 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 1304 find the most comfortable road
- hdu 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
- 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
- zhihu-spider之RabbitMQ——zhihu-spider开源项目使用技术详解(其五)
- _CRT_SECURE_NO_DEPRECATE
- Android 混淆那些事儿
- python实现猴子排序(Monkey_sort)闲聊睡眠排序
- hdu 5943 二分图匹配
- find the most comfortable road HDU
- 文件版通讯录的c语言实现
- POJ 1014 Dividing(多重背包转换成01背包)
- 读写文件的操作
- C++实现创建winform
- 回滚莫队?滚滚滚滚起来!
- #define 宏的用法备注
- java快速排序的递归版
- uikit——UIView——convert between view coordinate system