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

【样例输入1】


【样例输入2】


【样例输入3】


Sample Output

【样例输出1】

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的更多相关文章

  1. [BZOJ1050] [HAOI2006] 旅行comf (Kruskal, LCT)

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

  2. bzoj1050[HAOI2006]旅行comf(枚举+贪心+并查集)

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

  3. BZOJ1050: [HAOI2006]旅行comf(并查集 最小生成树)

    Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 4021  Solved: 2257[Submit][Status][Discuss] Descript ...

  4. [BZOJ1050][HAOI2006]旅行comf 枚举+并查集

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1050 将边排序,枚举边权最小的边,依次加边直到S和T连通,更新答案. #include&l ...

  5. [bzoj1050 HAOI2006] 旅行comf (kruskal)

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

  6. BZOJ1050 [HAOI2006]旅行comf[并查集判图连通性]

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

  7. 【BZOJ1050】[HAOI2006]旅行comf 并查集

    [BZOJ1050][HAOI2006]旅行comf Description 给你一个无向图,N(N<=500)个顶点, M(M<=5000)条边,每条边有一个权值Vi(Vi<300 ...

  8. 【bzoj1050】[HAOI2006]旅行comf

    1050: [HAOI2006]旅行comf Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 2813  Solved: 1534[Submit][St ...

  9. BZOJ 1050 [HAOI2006]旅行comf

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

随机推荐

  1. 【思维导图】Fiddler学习笔记

    最近在学习Fiddler这款工具,边学边画了如下的思维导图,可以方便自己对这款工具有一个全面的了解. 软件介绍(摘自百度百科):Fiddler是一个http协议调试代理工具,它能够记录并检查所有你的电 ...

  2. Sharepoint学习笔记—习题系列--70-576习题解析 -(Q13-Q15)

    Question 13 You are designing a SharePoint 2010 site. You need to design the site to meet all the fo ...

  3. Mac本“安全性与隐私”里没有“任何来源”选项

    打开"偏号设置"----->"安全性与隐私"----->"通用",里面没有"任何来源",怎么解决? 如果需要 ...

  4. NSFileManager和NSFileHandler的作用

    NSFileManager类可以管理文件系统中的文件和目录,也可以定位.判断是否存在.创建.拷贝.删除文件和目录,还可以获得文件和目录的信息: 对于读写文件,NSFileManager只可以读写字符串 ...

  5. Android 中的编码与解码

    前言:今天遇到一个问题,一个用户在登录的时候,出现登录失败.但是其他用户登录都是正常的,经过调试发现登录失败的用户的密码中有两个特殊字符: * .#  . 特殊符号在提交表单的时候,出现了编码不一样的 ...

  6. iOS 杂笔-23(区分各种空值)

    iOS 杂笔-23(区分各种空值) nil是一个对象指针为空 Nil是一个类指针为空 NULL是基本数据类型为空 NSNull空对象(是可以放在数组里的)

  7. 用最简单话概括SSH三框架

    Hibernate用来做持久层,因为它将JDBC做了一个良好的封装,程序员在与数据库进行交互时可以不用书写大量的SQL语句. Struts是用来做应用层的,他它负责调用业务逻辑serivce层,所以S ...

  8. git之一

    1.Git是什么Git是一款免费.开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目. Git是一个开源的分布式版本控制系统,用以有效.高速的处理从很小到非常大的项目版本管理.Git 是 ...

  9. 最受欢迎的Java第三方库

    前言 翻译自programcreek: 典型的Java项目通常会依赖一些第三方库,本文总结了一些最受欢迎的Java库,这些类库在各种应用程序中被广泛使用: 当然,Java SDK是最广泛使用的Java ...

  10. Java Se :线性表

    Java的集合框架分为两个系列,Collection和Map系列.在大学期间,学习数据结构时,好像学习了线性表.非线性表.树,哎,都给忘了.其实,在Collection系列内部又可以分为线性表.集合两 ...