传送门

边数只有5000,可以考虑\(O(m^2)\)算法,即把所有边按边权升序排序,然后依次枚举每条边\(i\),从这条边开始依次加边,加到起点和终点在一个连通块为止.这个过程可以用并查集维护.那么以\(i\)这条边为最小边的合法路径,最大值最小的边就是最后加进去的边,这时用这两个边权更新答案即可

可以加一些形如当前比值比答案更差就退出的剪枝

  1. #include<bits/stdc++.h>
  2. #define LL long long
  3. #define il inline
  4. #define re register
  5. #define db double
  6. #define eps (1e-5)
  7. using namespace std;
  8. const int N=500+10,M=5000+10;
  9. il LL rd()
  10. {
  11. LL x=0,w=1;char ch=0;
  12. while(ch<'0'||ch>'9') {if(ch=='-') w=-1;ch=getchar();}
  13. while(ch>='0'&&ch<='9') {x=(x<<3)+(x<<1)+(ch^48);ch=getchar();}
  14. return x*w;
  15. }
  16. struct ed
  17. {
  18. int x,y,z;
  19. bool operator < (const ed &bb) const {return z<bb.z;}
  20. }e[M];
  21. int n,m,ss,tt,a1,a2,fa[N];
  22. db mi=1e18;
  23. il int findf(int x){return fa[x]==x?x:fa[x]=findf(fa[x]);}
  24. il void merg(int x,int y){fa[findf(y)]=findf(x);}
  25. il int ggcd(int a,int b){return b?ggcd(b,a%b):a;}
  26. int main()
  27. {
  28. n=rd(),m=rd();
  29. for(int i=1;i<=m;i++) e[i].x=rd(),e[i].y=rd(),e[i].z=rd();
  30. sort(e+1,e+m+1);
  31. ss=rd(),tt=rd();
  32. for(int i=1;i<=m;i++)
  33. {
  34. for(int j=1;j<=n;j++) fa[j]=j;
  35. int w1=e[i].z,w2=e[i].z,x=e[i].x,y=e[i].y;
  36. merg(x,y);
  37. for(int j=i+1;j<=m&&findf(ss)!=findf(tt);j++)
  38. {
  39. int x=e[j].x,y=e[j].y;
  40. w2=e[j].z;
  41. merg(x,y);
  42. }
  43. if(findf(ss)!=findf(tt)) break;
  44. if(mi>(db)w2/(db)w1) mi=(db)w2/(db)w1,a1=w1,a2=w2;
  45. }
  46. if(!a1) puts("IMPOSSIBLE");
  47. else
  48. {
  49. int gcd=ggcd(a1,a2);
  50. a1/=gcd,a2/=gcd;
  51. a1==1?printf("%d\n",a2):printf("%d/%d\n",a2,a1);
  52. }
  53. return 0;
  54. }

luogu P2502 [HAOI2006]旅行的更多相关文章

  1. P2502 [HAOI2006]旅行

    P2502 [HAOI2006]旅行有些问题光靠直觉是不靠谱的,必须有简单的证明,要么就考虑到所有情况.这个题我想的是要么见最小生成树,要么建最大生成树,哎,我sb了一种很简单的情况就能卡掉在最小生成 ...

  2. P2502 [HAOI2006]旅行——暴力和并查集的完美结合

    P2502 [HAOI2006]旅行 一定要看清题目数据范围再决定用什么算法,我只看着是一个蓝题就想到了记录最短路径+最小生成树,但是我被绕进去了: 看到只有5000的边,我们完全可以枚举最小边和最大 ...

  3. luogu题解P2502[HAOI2006]旅行--最小生成树变式

    题目链接 https://www.luogu.org/problemnew/show/P2502 分析 一个很\(naive\)的做法是从\(s\)到\(t\)双向BFS这当然会TLE 这时我就有个想 ...

  4. 洛谷P2502[HAOI2006]旅行

    题目: Z小镇是一个景色宜人的地方,吸引来自各地的观光客来此旅游观光.Z小镇附近共有N个景点(编号为1,2,3,-,N),这些景点被M条道路连接着,所有道路都是双向的,两个景点之间可能有多条道路.也许 ...

  5. P2502 [HAOI2006]旅行 并查集

    题目描述 Z小镇是一个景色宜人的地方,吸引来自各地的观光客来此旅游观光.Z小镇附近共有N个景点(编号为1,2,3,…,N),这些景点被M条道路连接着,所有道路都是双向的,两个景点之间可能有多条道路.也 ...

  6. P2502 [HAOI2006]旅行 最小生成树

    思路:枚举边集,最小生成树 提交:1次 题解:枚举最长边,添加较小边. #include<cstdio> #include<iostream> #include<algo ...

  7. BZOJ 1050 [HAOI2006]旅行comf

    1050: [HAOI2006]旅行comf Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 1889  Solved: 976[Submit][Sta ...

  8. BZOJ 1050: [HAOI2006]旅行comf( 并查集 )

    将edge按权值排序 , O( m² ) 枚举边 , 利用并查集维护连通信息. ------------------------------------------------------------ ...

  9. 1050: [HAOI2006]旅行comf

    1050: [HAOI2006]旅行comf Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 1495  Solved: 737[Submit][Sta ...

随机推荐

  1. java.util.concuttent Callable Future详解

    在传统的多线程实现方式中(继承Thread和实现Runnable)无法直接获取线程执行的返回结果,如果需要获取执行结果,就必须通过共享变量或者使用线程通信的方式来达到效果,这样使用起来就比较麻烦. 从 ...

  2. caffe配置NCCL

    设置Makefile.config 打开开关: USE_NCCL := 1, 并添加nccl库路径 USE_NCCL := 1 INCLUDE_DIRS += /path/nccl/build/inc ...

  3. 美国运营商推送假5G图标:用户当场蒙圈了

    面对5G大潮,大家都想“争当第一”.美国运营商AT&T想出奇招,打算玩一把“障眼法”. 据外媒报道,AT&T的用户从明年开始会在手机右上角看到“5G E”的图标.当然,这并不是他们的手 ...

  4. Codeforces Round #431 (Div. 2) B. Tell Your World

    B. Tell Your World time limit per test 1 second memory limit per test 256 megabytes input standard i ...

  5. day9-13 linux基础

    有道云笔记链接 http://note.youdao.com/noteshare?id=207be3d6bd79e9ff2e30b160bca1fd87

  6. Domino 邮箱服务器接收不存在的邮箱账号的邮件

    背景: domino邮箱服务器需要设置多个邮件账号邮件转到同一个邮箱账号. 比如:现在没有了 abc@mail.com 的邮箱账号.但是当用户发邮件给它的时候就发给Support@mail.com 原 ...

  7. CRM 2013 生成自动编号

    1. 建立二个实体: 单据规则: 用于创建单据的规则 规则流水号: 用于记录当前的流水号   2. 创建规则: 创建一条相关的记录后,就会显示对应的流水号:   最终效果:

  8. luogu2865 路障 (dijkstra)

    求次短路,dijkstra时同时记下到某点的最短距离和次短距离即可. #include<cstdio> #include<cstring> #include<algori ...

  9. js的append拼接html丢失css样式解决

    htmlApp += "<li id='leftli"+lunci+"'>"; htmlApp += "<span id='left ...

  10. java.lang.OutOfMemoryError及解决方案

    主要有3种比较常见的OutOfMemory Error: java.lang.OutOfMemoryError: Java heap space java.lang.OutOfMemoryError: ...