bzoj1050: [HAOI2006]旅行comf
Description
给你一个无向图,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
【样例输入2】
【样例输入3】
Sample Output
IMPOSSIBLE
【样例输出2】
/
【样例输出3】
题解:
贪心+并查集+最小生成树
对于求最小比的做法,即让分子分母最接近即可
实现方法:
主要思想:kruskal
0.预处理:按边权升序排序
1.不断把最小速度提前。
2.查看当前最小速度是否符合题意,即s和t联通,用kruskal算法
3.更新最优解
| 1704857 | ksq2013 | 1050 | Accepted | 884 kb | 408 ms | C++/Edit | 1354 B | 2016-11-14 11:08:05 |
#include<cstdio>
#include<algorithm>
using namespace std;
inline void F(int &x){
x=;int c=getchar(),f=;
for(;c<||c>;c=getchar())
if(!(c^))
f=-;
for(;c>&&c<;c=getchar())
x=(x<<)+(x<<)+c-;
x*=f;
}
inline int gcd(int x,int y,int t=){
for(;y;)
t=x%y,
x=y,
y=t;
return x;
}
int n,m,f[],mx=0x3f3f3f3f,mn=,s,t;
inline int bin(int x){
int p1,p2=x;
for(;f[x]^x;x=f[x])
;
for(;f[p2]^p2;)
p1=f[p2],
f[p2]=x,
p2=p1;
return x;
}
struct edge{
int u,v,w;
bool operator<(const edge h)const{
return w<h.w;
}
}e[];
int main(){
F(n),F(m);
for(int i=;i<=m;i++)
F(e[i].u),
F(e[i].v),
F(e[i].w);
sort(e+,e++m);
F(s),F(t);
for(int k=,i;k<=m;k++){
for(i=;i<=n;i++)
f[i]=i;
for(i=k;i<=m;i++){
int u=bin(e[i].u);
int v=bin(e[i].v);
if(!(u^v))
continue;
f[v]=u;
if(!(bin(s)^bin(t)))
break;
}
if(bin(s)^bin(t)){
if(!(k^)){
puts("IMPOSSIBLE");
return ;
}
break;
}
if(mx*e[k].w>=mn*e[i].w)
mx=e[i].w,
mn=e[k].w;
}
t=gcd(mx,mn);
if(!(t^mn))
printf("%d\n",mx/mn);
else
printf("%d/%d\n",mx/t,mn/t);
return ;
}
bzoj1050: [HAOI2006]旅行comf的更多相关文章
- [BZOJ1050] [HAOI2006] 旅行comf (Kruskal, LCT)
Description 给你一个无向图,N(N<=500)个顶点, M(M<=5000)条边,每条边有一个权值Vi(Vi<30000).给你两个顶点S和T,求一条路径,使得路径上最大 ...
- bzoj1050[HAOI2006]旅行comf(枚举+贪心+并查集)
Description 给你一个无向图,N(N<=500)个顶点, M(M<=5000)条边,每条边有一个权值Vi(Vi<30000).给你两个顶点S和T,求一条路径,使得路径上最大 ...
- BZOJ1050: [HAOI2006]旅行comf(并查集 最小生成树)
Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 4021 Solved: 2257[Submit][Status][Discuss] Descript ...
- [BZOJ1050][HAOI2006]旅行comf 枚举+并查集
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1050 将边排序,枚举边权最小的边,依次加边直到S和T连通,更新答案. #include&l ...
- [bzoj1050 HAOI2006] 旅行comf (kruskal)
传送门 Description 给你一个无向图,N(N<=500)个顶点, M(M<=5000)条边,每条边有一个权值Vi(Vi<30000).给你两个顶点S和T,求 一条路径,使得 ...
- BZOJ1050 [HAOI2006]旅行comf[并查集判图连通性]
★ Description 给你一个无向图,N(N<=500)个顶点, M(M<=5000)条边,每条边有一个权值Vi(Vi<30000).给你两个顶点S和T,求 一条路径,使得路径 ...
- 【BZOJ1050】[HAOI2006]旅行comf 并查集
[BZOJ1050][HAOI2006]旅行comf Description 给你一个无向图,N(N<=500)个顶点, M(M<=5000)条边,每条边有一个权值Vi(Vi<300 ...
- 【bzoj1050】[HAOI2006]旅行comf
1050: [HAOI2006]旅行comf Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 2813 Solved: 1534[Submit][St ...
- BZOJ 1050 [HAOI2006]旅行comf
1050: [HAOI2006]旅行comf Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 1889 Solved: 976[Submit][Sta ...
随机推荐
- flume 集群安装
./pssh -h ./host/all.txt -P mkdir /usr/local/app ./pssh -h ./host/all.txt -P tar zxf /usr/local/soft ...
- 2015年Java开发岗位面试题归类
一.Java基础 1. String类为什么是final的. 2. HashMap的源码,实现原理,底层结构. 3. 说说你知道的几个Java集合类:list.set.queue.map实现类咯... ...
- iOS 跳转到App Store下载或评论
//跳转到app在AppStore页面 [[UIApplication sharedApplication] openURL:[NSURL URLWithString:[NSString string ...
- 你真的了解UIApplication吗?
一:首先查看一下关于UIApplication的定义 NS_CLASS_AVAILABLE_IOS(2_0) @interface UIApplication : UIResponder //获得单例 ...
- EditText显示明文与密码
布局 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=& ...
- 简单的ASP.NET Forms身份认证
读了几篇牛人的此方面的文章,自己也动手做了一下,就想有必要总结一下.当然我的文章质量自然不能与人家相比,只是写给从没有接触过这个知识点的朋友. 网站的身份认证我以前只知道session,偶然发现一些牛 ...
- db2+python+sqlchemy环境的搭建
记录了通过sqlalchemy 管理db2数据库的环境搭建 1.db2数据库安装配置 利用winscp复制iso文件到/mnt/IBM_db2 目录下 IBM_db2为自己创建 重命名 mv IBM\ ...
- WPF学习之路(十三)URL
URL一般由三个部分组成,协议.资源所在主机地址.资源路径 WPF中URL同样有三部分组成:pack.authority(application:| siteoforigin:).路径 资源文件 本地 ...
- python里面出现中文的时候报错 'ascii' codec can't encode characters in position
编码问题,在头部添加 import sys reload(sys) sys.setdefaultencoding( "utf-8" ) http://www.xuebuyuan.c ...
- android中的广播接收实现总结
1 首先根据广播应用内接收和应用外接收,分两个类进行管理[1] LocalBroadcastManager,应用内广播管理类[2] BroadcastManager 广播管理类(部分应用内,应用 ...