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. SharePoint 2013 搜索报错"Unable to retrieve topology component health. This may be because the admin component is not up and running"

    环境描述 Windows 2012 R2,SharePoint 2013(没有sp1补丁),sql server 2012 错误描述 搜索服务正常,但是爬网一直在Crawling Full,但是爬不到 ...

  2. Java虚拟机JVM学习03 连接过程:验证、准备、解析

    Java虚拟机JVM学习03 连接过程:验证.准备.解析 类被加载后,就进入连接阶段. 连接就是将已经读入到内存的类的二进制数据合并到虚拟机的运行时环境中去. 连接阶段三个步骤:验证.准备和解析. 类 ...

  3. ARC下内存泄露问题

    ARC下内存泄露问题 ARC下内存泄露问题,有需要的朋友可以参考下. iOS提供了ARC功能,很大程度上简化了内存管理的代码. 但使用ARC并不代表了不会发生内存泄露,使用不当照样会发生内存泄露. 下 ...

  4. ThinkPHP 空方法 显示

    TP如果  一个控制器 没有一个方法 ,只要有一个模版,URL会对应显示模版名称. 例子 http://localhost/yiyunmap/map/test map控制器 并没有 test方法 但是 ...

  5. JS获取浏览器名和版本信息

    Navigator 对象包含有关浏览器的信息. Navigator 对象属性和方法: <html> <head> <title>JS完整获取浏览器信息</ti ...

  6. 3、软件评测师要阅读的书籍 - IT软件人员书籍系列文章

    软件评测师在项目组的作用也是非常大的.微软的做法是一个软件工程师搭配两个软件评测师,这样能够减少软件系统存在的问题.但是,笔者发现,软件评测在这些年的发展还是比较缓慢的,除了人力进行的测试外,就是软件 ...

  7. HTML(六)——表单验证、正则表达式、事件

    1.表单验证<form></form> (1).非空验证(去空格) (2).对比验证(跟一个值对比) (3).范围验证(根据一个范围进行判断) (4).固定格式验证:电话号码, ...

  8. Java并发工具类Semaphore应用实例

    package com.thread.test.thread; import java.util.Random; import java.util.concurrent.*; /** * Semaph ...

  9. goldengate初始化

    对丢弃已久的goldengate环境重新配置,使其重新开始跑起来 环境是一个主机上的两个库,都是单机,所以也就没配pump进程了,trail file都是在一个文件夹下的,extract写trail ...

  10. hibernate连接数据库和反向工程

    一.JSP界面连接数据库: 导包:将11个包倒进web-inf的lib目录下: 二.建立hibernate.cfg.xml的配置文件:!注意:是放到项目SRC目录下: 三.将视图切换到java下,在左 ...