hdu1598

find the most comfortable road

Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)

Total Submission(s): 3300    Accepted Submission(s): 1406

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
  1. 4 4
  2. 1 2 2
  3. 2 3 4
  4. 1 4 1
  5. 3 4 2
  6. 2
  7. 1 3
  8. 1 2
 
Sample Output
  1. 1
  2. 0
 

分析:我们先按速度从小到大排序,再利用枚举法找到速度之差最小

程序:

  1. #include"string.h"
  2. #include"stdio.h"
  3. #define M 211
  4. #define inf 999999999
  5. #include"stdlib.h"
  6. struct st
  7. {
  8. int u,v,w,next;
  9. }edge[M*30];
  10. int head[M],f[M],n,t;
  11. int finde(int x)
  12. {
  13. if(x!=f[x])
  14. f[x]=finde(f[x]);
  15. return f[x];
  16. }
  17. void make(int a,int b)
  18. {
  19. int x=finde(a);
  20. int y=finde(b);
  21. if(x!=y)
  22. f[x]=y;
  23. }
  24. void init()
  25. {
  26. t=0;
  27. memset(head,-1,sizeof(head));
  28. }
  29. void add(int u,int v,int w)
  30. {
  31. edge[t].u=u;
  32. edge[t].v=v;
  33. edge[t].w=w;
  34. edge[t].next=head[u];
  35. head[u]=t++;
  36. }
  37. int cmp(const void *a,const void *b)
  38. {
  39. return (*(struct st*)a).w-(*(struct st*)b).w;
  40. }
  41. int main()
  42. {
  43. int m,i,j;
  44. while(scanf("%d%d",&n,&m)!=-1)
  45. {
  46. init();
  47. while(m--)
  48. {
  49. int a,b,c;
  50. scanf("%d%d%d",&a,&b,&c);
  51. add(a,b,c);
  52. }
  53. qsort(edge,t,sizeof(edge[0]),cmp);
  54. int Q;
  55. scanf("%d",&Q);
  56. while(Q--)
  57. {
  58. int ss,tt;
  59. scanf("%d%d",&ss,&tt);
  60. int ans=inf;
  61. for(i=0;i<t;i++)
  62. {
  63. for(j=1;j<=n;j++)
  64. f[j]=j;
  65. for(j=i;j<t;j++)
  66. {
  67. int u=edge[j].u;
  68. int v=edge[j].v;
  69. make(u,v);
  70. if(finde(ss)==finde(tt))
  71. {
  72. if(ans>edge[j].w-edge[i].w)
  73. ans=edge[j].w-edge[i].w;
  74. break;
  75. }
  76. }
  77. }
  78. if(ans<inf)
  79. printf("%d\n",ans);
  80. else
  81. printf("-1\n");
  82. }
  83. }
  84. }

最舒适的路(并查集+枚举)(hdu1598)的更多相关文章

  1. hdu 1598 find the most comfortable road(并查集+枚举)

    find the most comfortable road Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K ...

  2. USACO环绕岛屿Surround the Islands 并查集 枚举暴力

    题目描述 Farmer John has bought property in the Caribbean and is going to try to raise dairy cows on a b ...

  3. poj2912(种类并查集+枚举)

    题目:http://poj.org/problem?id=2912 题意:n个人进行m轮剪刀石头布游戏(0<n<=500,0<=m<=2000),接下来m行形如x, y, ch ...

  4. 2019.01.22 zoj3583 Simple Path(并查集+枚举)

    传送门 题意简述:给出一张图问不在从sss到ttt所有简单路径上的点数. 思路: 枚举删去每个点然后把整张图用并查集处理一下,同时不跟sss和ttt在同一个连通块的点就是满足要求的点(被删去的不算). ...

  5. POJ - 2513 Colored Sticks(欧拉通路+并查集+字典树)

    https://vjudge.net/problem/POJ-2513 题解转载自:優YoU  http://user.qzone.qq.com/289065406/blog/1304742541 题 ...

  6. 1050. [HAOI2006]旅行【并查集+枚举】

    Description 给你一个无向图,N(N<=500)个顶点, M(M<=5000)条边,每条边有一个权值Vi(Vi<30000).给你两个顶点S和T,求 一条路径,使得路径上最 ...

  7. BZOJ 1050 旅行comf 并查集+枚举下界

    题目链接: https://www.lydsy.com/JudgeOnline/problem.php?id=1050 题目大意: 给你一个无向图,N(N<=500)个顶点, M(M<=5 ...

  8. POJ - 2912 Rochambeau (带权并查集+枚举)

    题意:有N个人被分为了三组,其中有一个人是开了挂的.同组的人的关系是‘=’,不同组的人关系是‘<’或'>',但是开了挂的人可以给出自己和他人任意的关系.现在要根据M条关系找出这个开了挂的人 ...

  9. POJ-2513 Colored Sticks---欧拉回路+并查集+字典树

    题目链接: https://vjudge.net/problem/POJ-2513 题目大意: 给一些木棍,两端都有颜色,只有两根对应的端点颜色相同才能相接,问能不能把它们接成一根木棍 解题思路: 题 ...

  10. POJ2912 Rochambeau —— 种类并查集 + 枚举

    题目链接:http://poj.org/problem?id=2912 Rochambeau Time Limit: 5000MS   Memory Limit: 65536K Total Submi ...

随机推荐

  1. bootstrap 兼容哪些浏览器

    Bootstrap的目标是在最新的桌面和移动浏览器上有最佳的表现,也就是说,在较老旧的浏览器上可能会导致某些组件表现出的样式有些不同,但是功能是完整的.bootstrap3支持的浏览器: Chrome ...

  2. openfire 详细介绍一

    XMPP ExtensibleMessaging and Presence Protocol,简单的来讲,它就是一个发送接收处理消息的协议,但是这个协议发送的消息,既不是二进制的东东也不是字符串,而是 ...

  3. 【转】struts2.5框架使用通配符指定方法(常见错误)

    在学习struts框架时经常会使用到通配符调用方法,如下: <package name="shop" namespace="/" extends=&quo ...

  4. c++ const enum #define

    最后的最后,我们略微总结一下:        1.只是声明单一固定值,尽可能采用const.        2.如果是一组固定值,并且互相有关联,则采用enum.        3.不涉及条件编译,只 ...

  5. PureMVC--一款多平台MVC框架

    官网:http://puremvc.org/ 下载:https://github.com/PureMVC/puremvc-csharp-multicore-framework/tree/1.1.0 A ...

  6. mysql优化方法积累

    1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索 ...

  7. downtown uptown

    Downtown is a term primarily used in North America by English speakers to refer to a city's core (or ...

  8. ros论坛

    ros:http://ros.gaitech.net/forum.php makefile:http://blog.csdn.net/shallnet/article/details/38070745 ...

  9. swift--设置app图标和启动页面

    1,如下图:

  10. Android:控件布局(相对布局)RelativeLayout(转)

    相对布局常用属性: 子类控件相对子类控件:值是另外一个控件的id android:layout_above----------位于给定DI控件之上android:layout_below ------ ...