给你一个无向图,N(N<=500)个顶点, M(M<=5000)条边,每条边有一个权值Vi(Vi<30000)。给你两个顶点S和T,求
一条路径,使得路径上最大边和最小边的比值最小。如果S和T之间没有路径,输出”IMPOSSIBLE”,否则输出这个
比值,如果需要,表示成一个既约分数。 备注: 两个顶点之间可能有多条路径。

Input

第一行包含两个正整数,N和M。下来的M行每行包含三个正整数:x,y和v。表示景点x到景点y之间有一条双向公路
,车辆必须以速度v在该公路上行驶。最后一行包含两个正整数s,t,表示想知道从景点s到景点t最大最小速度比
最小的路径。s和t不可能相同。
1<N<=500,1<=x,y<=N,0<v<30000,0<M<=5000

Output

如果景点s到景点t没有路径,输出“IMPOSSIBLE”。否则输出一个数,表示最小的速度比。
如果需要,输出一个既约分数。

Sample Input

  1. 【样例输入1
  2. 4 2
  3. 1 2 1
  4. 3 4 2
  5. 1 4
  6. 【样例输入2
  7. 3 3
  8. 1 2 10
  9. 1 2 5
  10. 2 3 8
  11. 1 3
  12. 【样例输入3
  13. 3 2
  14. 1 2 2
  15. 2 3 4
  16. 1 3

Sample Output

  1. 【样例输出1
  2. IMPOSSIBLE
  3. 【样例输出2
  4. 5/4
  5. 【样例输出3
  6. 2
  7.  
  8. 这道题是枚举最小边,然后就是简单的kruskal,找最优解,十分简单。
  1. #include<algorithm>
  2. #include<iostream>
  3. #include<cstring>
  4. #include<cstdio>
  5. #include<queue>
  6. using namespace std;
  7. #define N 505
  8. #define M 5005
  9. #define INF 30000
  10.  
  11. int n,m,x,y,z,s,t,up,down;
  12. double ans;
  13. int f[N];
  14. struct hp{int x,y,z;}edge[M];
  15.  
  16. int cmp(hp a,hp b)
  17. {
  18. return a.z<b.z;
  19. }
  20. int find(int x)
  21. {
  22. if (x==f[x]) return x;
  23. f[x]=find(f[x]);
  24. return f[x];
  25. }
  26. int gcd(int a,int b)
  27. {
  28. if (!b) return a;
  29. else return gcd(b,a%b);
  30. }
  31. int main()
  32. {
  33. scanf("%d%d",&n,&m);
  34. for (int i=;i<=n;++i) f[i]=i;
  35. for (int i=;i<=m;++i)
  36. {
  37. scanf("%d%d%d",&x,&y,&z);
  38. int f1=find(x),f2=find(y);
  39. if (f1!=f2) f[f1]=f2;
  40. edge[i].x=x,edge[i].y=y,edge[i].z=z;
  41. }
  42. scanf("%d%d",&s,&t);
  43. if (find(s)!=find(t))
  44. {
  45. puts("IMPOSSIBLE");
  46. return ;
  47. }
  48.  
  49. ans=INF;
  50. sort(edge+,edge+m+,cmp);
  51. for (int l=;l<=m;++l)
  52. {
  53. bool flag=false; int r;
  54. for (int i=;i<=n;++i) f[i]=i;
  55. for (int i=l;i<=m;++i)
  56. {
  57. int f1=find(edge[i].x),f2=find(edge[i].y);
  58. if (f1!=f2) f[f1]=f2;
  59. if (find(s)==find(t))
  60. {
  61. r=i;
  62. flag=true;
  63. break;
  64. }
  65. }
  66. if (flag)
  67. {
  68. double now=(edge[r].z+0.0)/(edge[l].z+0.0);
  69. if (now<ans) ans=now,up=edge[r].z,down=edge[l].z;
  70. }
  71. }
  72.  
  73. int t=gcd(up,down);
  74. if (t!=down) printf("%d/%d\n",up/t,down/t);
  75. else printf("%d\n",up/t);
  76. }

【codevs1001】[bzoj1050]舒适的路线的更多相关文章

  1. [题解]codevs1001 舒适的路线

    h3 { font-family: Consolas; color: #339966 } .math { font-family: Consolas; color: gray } 题目描述 Descr ...

  2. [codevs1001]舒适的路线

    [codevs1001]舒适的路线 试题描述 Z小镇是一个景色宜人的地方,吸引来自各地的观光客来此旅游观光.Z小镇附近共有N(1<N≤500)个景点(编号为1,2,3,-,N),这些景点被M(0 ...

  3. codevs1001 舒适的路线 - 贪心 - 并查集

    题目描述 Description Z小镇是一个景色宜人的地方,吸引来自各地的观光客来此旅游观光.Z小镇附近共有N(1<N≤500)个景点(编号为1,2,3,…,N),这些景点被M(0<M≤ ...

  4. 【Kruskal】舒适的路线

    [codevs1001]舒适的路线 题目描述 Description Z小镇是一个景色宜人的地方,吸引来自各地的观光客来此旅游观光.Z小镇附近共有N(1<N≤500)个景点(编号为1,2,3,… ...

  5. 求最大边/最小边的比值最小的路径 codevs 1001 舒适的路线

    codevs 1001 舒适的路线 2006年  时间限制: 2 s  空间限制: 128000 KB  题目等级 : 钻石 Diamond   题目描述 Description Z小镇是一个景色宜人 ...

  6. codevs 1001 舒适的路线(Kruskal)

    传送门 Description Z小镇是一个景色宜人的地方,吸引来自各地的观光客来此旅游观光.Z小镇附近共有N(1<N≤500)个景点(编号为1,2,3,…,N),这些景点被M(0<M≤5 ...

  7. AC日记——舒适的路线 codevs 1001 (并查集+乱搞)

    1001 舒适的路线 2006年  时间限制: 2 s  空间限制: 128000 KB  题目等级 : 钻石 Diamond 题解  查看运行结果     题目描述 Description Z小镇是 ...

  8. Codevs 1001 舒适的路线 2006年 NOIP全国联赛提高组

    1001 舒适的路线 2006年 时间限制: 2 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题目描述 Description Z小镇是一个景色宜人的地方,吸引来自各地的观 ...

  9. codevs 1001 舒适的路线 (并查集)

    题目描述 Description Z小镇是一个景色宜人的地方,吸引来自各地的观光客来此旅游观光. Z小镇附近共有 N(<N≤)个景点(编号为1,,,…,N),这些景点被M(<M≤)条道路连 ...

随机推荐

  1. JavaScript--我发现!原来你是这样的JS(1)

    一.前言: 前段时间看红宝书(JavaScript高级程序设计),但没有计划的去看,也没有做详细的笔记,读了之后有点空虚,感觉不对劲啊,学的东西很难记住,印象不深啊,有种挫败感,作前端的js都学不好怎 ...

  2. block的定义及使用

    (1)最基础的用法案例,我们可以把block理解为一段类似变量一样的可执行函数代码片段: void (^printBlock)(NSString *x); printBlock = ^(NSStrin ...

  3. 基于Vue全家桶制作的的高仿美团APP

    鸣谢:该项目核心部分参考了慕课网精英讲师ustbhuangyi的课程,其余部分高仿美团APP构建. 前端菜鸟项目,大佬们轻喷~ 美团外卖APP

  4. python怎么导入自定义函数

    python 编程中经常需要调用自己定义的函数,在大型程序中自定义的函数一般会和main函数分开,这么主要讲下在不同文件下定义的函数怎么调用: 首先在有文件夹test_python文件夹下有main. ...

  5. JMeter打开脚本失败 如何解决?

    最近有碰到JMeter打开之前的脚本,报错了,见下图: 后来发现这是因为之前保存脚本的 jmeter 和这次打开脚本的 jmeter 版本不一致(图一)或者版本一致而插件没有保持同步(图二)的原因: ...

  6. 团队作业6——展示博客(Alpha版本)

    Deadline: 2017-5-7 22:00PM,以博客发表日期为准 评分基准: 按时交 - 有分,检查的项目包括后文的四个方面 团队成员介绍 Alpha阶段进展 团队合作,各成员分工 Beta阶 ...

  7. 结对编程1--基于GUI的四则运算题目生成器

    最终项目详细代码(coding地址)/李志强的博客/我的详细代码/方言的博客 一.需求分析 1.实现之前项目的功能,如:除了整数之外,还要支持真分数的四则运算,真分数的运算,并且要求能处理用户的输入, ...

  8. 201521123081《Java程序设计》 第6周学习总结

    1. 本周学习总结 1.1 面向对象学习暂告一段落,请使用思维导图,以封装.继承.多态为核心概念画一张思维导图,对面向对象思想进行一个总结. 注1:关键词与内容不求多,但概念之间的联系要清晰,内容覆盖 ...

  9. 201521123006 《Java程序设计》第4周学习总结

    1. 本周学习总结 1.1 尝试使用思维导图总结有关继承的知识点. 1.2 使用常规方法总结其他上课内容. 本周除了继承,我们还重点学习了多态. (1)多态性在于有相同的形态,却是不同的行为或者说是不 ...

  10. 201521123062《Java程序设计》第1周学习总结

    1.本章学习总结 认识Java平台运行环境,运行软件 初步认识JDK,JRE,JVM基本含义 书面作业 1.为什么java程序可以跨平台运行?执行java程序的步骤是什么? Java平台运行在各平台的 ...