BZOJ1050 [HAOI2006]旅行comf
题目描述:
#include<cstdio> #include<cmath> #include<cstring> #include<algorithm> using namespace std; int n,m,s,t,f[5001],flag,idx,cnt1,cnt2; double ans=999999999.0; struct Edge {int l,r,v; }a[5001]; bool cmp(const Edge &x,const Edge &y) {return x.v<y.v; } int find(int p) {if(f[p]!=p)f[p]=find(f[p]);return f[p]; } void merge(int x,int y) {int fx=find(x);int fy=find(y);if(fx!=fy)f[fx]=fy; } int gcd(int x,int y) {if(x%y==0)return y;return gcd(y,x%y); } int main() {scanf("%d%d",&n,&m);for(int i=1;i<=m;i++)scanf("%d%d%d",&a[i].l,&a[i].r,&a[i].v);scanf("%d%d",&s,&t);sort(a+1,a+m+1,cmp);for(int i=1;i<=m;i++){flag=0;for(int j=1;j<=n;j++)f[j]=j;for(int j=i;j<=m;j++){merge(a[j].l,a[j].r);if(find(s)==find(t)){idx=j;flag=1;break;}}if(flag==1){if(ans>(a[idx].v*1.0)/a[i].v){ans=(a[idx].v*1.0)/a[i].v;cnt1=a[idx].v;cnt2=a[i].v;}}}if(ans==999999999.0){printf("IMPOSSIBLE");return 0;}int k=gcd(cnt1,cnt2);if(cnt2/k==1)printf("%d",cnt1/k);elseprintf("%d/%d",cnt1/k,cnt2/k); }
转载于:https://www.cnblogs.com/jiangminghong/p/9843204.html
BZOJ1050 [HAOI2006]旅行comf相关推荐
- bzoj1050: [HAOI2006]旅行comf
题面在这里 题意: 给一个图,每条边有边权. 给一个s和t,如果s和t之间没有路径输出IMPOSSIBLE,否则输出路径上最大边和最小边的比值的最小值. 做法: 你把边从小到大排序.那么对于一个最小值 ...
- [bzoj1050 HAOI2006] 旅行comf (kruskal)
传送门 Description 给你一个无向图,N(N<=500)个顶点, M(M<=5000)条边,每条边有一个权值Vi(Vi<30000).给你两个顶点S和T,求 一条路径,使得 ...
- bzoj1050 [HAOI2006]旅行comf(并查集)
要求路径上最大边与最小边比值的最小值.我们知道,如果固定最小值,最大值越接近最小值,他们的比值越小.因此我们可以采用类似bzoj3454的方法,把所有边从小到大排序,枚举最小值,再枚举最大值,用并查集 ...
- BZOJ1050 [HAOI2006]旅行comf(Kruskal算法)
SPFA是错误的:局部最优不能保证全局最优,因为要求的是比例最小,与路的长短无直接关系 可以设计m^2的算法: 先将边按长度排序,然后每次枚举最小边的长度w[i]作限定,依次加入更大的边, 当加到某条 ...
- bzoj1050 [HAOI2006]旅行comf
题目 枚举最小边,在用kruskal方法来让S与T,联通,这样比值就最优了.. #include<bits/stdc++.h> using namespace std; int f[501 ...
- [BZOJ1050] [HAOI2006] 旅行comf (Kruskal, LCT)
Description 给你一个无向图,N(N<=500)个顶点, M(M<=5000)条边,每条边有一个权值Vi(Vi<30000).给你两个顶点S和T ,求一条路径,使得路径上最 ...
- BZOJ1050 HAOI2006 旅行comf 生成树+枚举
题意:给订一张无向图,求一条S到T的路径,使得路径上的最大边权与最小边权的比值最小 题解:将边由小到大排序,暴力枚举最小边,然后借鉴Kruskal的思想,由小到大加入每一条大于初始边的边,检验S与T是 ...
- BZOJ1050 [HAOI2006]旅行comf (并查集)
题意分析 一开始想用最短路的方法维护,然后更新信息.失败了. 想了半天,发现跟lrj书上面的一道题很像,看边才5000,暴力可做. 对边排序后枚举sta,直到发现起点和重点在一个联通块里面,统计答案即 ...
- 【bzoj1050】[HAOI2006]旅行comf
1050: [HAOI2006]旅行comf Time Limit: 10 Sec Memory Limit: 162 MB Submit: 2813 Solved: 1534 [Submit][ ...
最新文章
- Git忽略已经被提交的文件
- MySQL基本语句——增、删、查、改
- 一起学设计模式-观察者模式
- css3 设置多列布局
- 【译】《Understanding ECMAScript6》- 第三章-Object
- YUI 的模块信息配置优先级关系梳理
- 河南王牌计算机专业,河南计算机专业实力突出的7所大学,郑大位列次席,榜首实至名归...
- wp_nav_menu($args)函数说明
- spring cloud config的bootstrap.yml与application.proterties的区别
- 【英语学习】【WOTD】trivial 释义/词源/示例
- tomcat配置SSL加密网站
- 详细讲解3DMAX导出插件-tiamo
- 怎么把excel表格内的数据导入数据库?
- Myeclipse8.5 最新注册码以使用方法(可以用到2015年!!!)
- pxe无盘服务器教程,Windows下架设PXE服务器的方法
- 十天学会单片机和c语言编程,十天学会单片机和C语言编程
- Python基础——isupper()方法和islower()方法
- TexWorks中添加拼写纠察
- 商科能读计算机专业吗,我本科读的计算机 想去新西兰留学可以换专业吗? 没分了跪求啊,...
- 给下拉框加上可输入查询特性-升级版本