[codevs1001]舒适的路线
[codevs1001]舒适的路线
试题描述
Z小镇是一个景色宜人的地方,吸引来自各地的观光客来此旅游观光。
Z小镇附近共有
N(1<N≤500)个景点(编号为1,2,3,…,N),这些景点被M(0<M≤5000)条道路连接着,所有道路都是双向的,两个景点之间可能有多条道路。也许是为了保护该地的旅游资源,Z小镇有个奇怪的规定,就是对于一条给定的公路Ri,任何在该公路上行驶的车辆速度必须为Vi。频繁的改变速度使得游客们很不舒服,因此大家从一个景点前往另一个景点的时候,都希望选择行使过程中最大速度和最小速度的比尽可能小的路线,也就是所谓最舒适的路线。
输入
第一行包含两个正整数,N和M。
接下来的M行每行包含三个正整数:x,y和v(1≤x,y≤N,0 最后一行包含两个正整数s,t,表示想知道从景点s到景点t最大最小速度比最小的路径。s和t不可能相同。
输出
如果景点s到景点t没有路径,输出“IMPOSSIBLE”。否则输出一个数,表示最小的速度比。如果需要,输出一个既约分数。
输入示例
输出示例
- /
数据规模及约定
N(1<N≤500)
M(0<M≤5000)
Vi在int范围内
题解
把 m 条边按照 V 值从小到大排序,然后 O(n2) 扫一遍用并查集维护一下 s, t 间的连通性。
- #include <iostream>
- #include <cstdio>
- #include <cstdlib>
- #include <cstring>
- #include <cctype>
- #include <algorithm>
- using namespace std;
- int read() {
- int x = 0, f = 1; char c = getchar();
- while(!isdigit(c)){ if(c == '-') f = -1; c = getchar(); }
- while(isdigit(c)){ x = x * 10 + c - '0'; c = getchar(); }
- return x * f;
- }
- #define maxn 510
- #define maxm 5010
- #define LL long long
- int n, m, s, t;
- struct Edge {
- int u, v, d;
- Edge() {}
- Edge(int _1, int _2, int _3): u(_1), v(_2), d(_3) {}
- bool operator < (const Edge& t) const { return d < t.d; }
- } es[maxm];
- LL gcd(LL a, LL b) { return !b ? a : gcd(b, a % b); }
- struct Fra {
- LL a, b;
- Fra() {}
- Fra(LL _, LL __): a(_), b(__) {}
- void maintain() {
- if(a < 0) return ;
- LL d = gcd(a, b);
- a /= d; b /= d;
- return ;
- }
- bool operator < (const Fra& t) const { return a * t.b < b * t.a; }
- } ;
- int fa[maxn];
- int findset(int x) { return x == fa[x] ? x : fa[x] = findset(fa[x]); }
- int main() {
- n = read(); m = read();
- for(int i = 1; i <= m; i++) {
- int a = read(), b = read(), c = read();
- es[i] = Edge(a, b, c);
- }
- s = read(); t = read();
- Fra ans(-1, -1);
- sort(es + 1, es + m + 1);
- for(int i = 1; i <= m; i++) {
- for(int j = 1; j <= n; j++) fa[j] = j;
- for(int j = i; j <= m; j++) {
- Edge& e = es[j];
- int u = findset(e.u), v = findset(e.v);
- if(u != v) fa[v] = u;
- if(findset(s) == findset(t)) {
- if(ans.a < 0) ans = Fra(e.d, es[i].d);
- ans = min(ans, Fra(e.d, es[i].d));
- break;
- }
- }
- }
- if(ans.a < 0) return puts("IMPOSSIBLE"), 0;
- ans.maintain();
- if(ans.b != 1) printf("%lld/%lld\n", ans.a, ans.b);
- else printf("%lld\n", ans.a);
- return 0;
- }
[codevs1001]舒适的路线的更多相关文章
- [题解]codevs1001 舒适的路线
h3 { font-family: Consolas; color: #339966 } .math { font-family: Consolas; color: gray } 题目描述 Descr ...
- codevs1001 舒适的路线 - 贪心 - 并查集
题目描述 Description Z小镇是一个景色宜人的地方,吸引来自各地的观光客来此旅游观光.Z小镇附近共有N(1<N≤500)个景点(编号为1,2,3,…,N),这些景点被M(0<M≤ ...
- CODEVS1001 舒适的路线 (并查集)
对所有边从大到小排序,枚举最大边,O(m)验证,用并查集维护图是否联通. program CODEVS1001; ; maxn=; INF=; type arr=record u,v,w:int64; ...
- 【Kruskal】舒适的路线
[codevs1001]舒适的路线 题目描述 Description Z小镇是一个景色宜人的地方,吸引来自各地的观光客来此旅游观光.Z小镇附近共有N(1<N≤500)个景点(编号为1,2,3,… ...
- 求最大边/最小边的比值最小的路径 codevs 1001 舒适的路线
codevs 1001 舒适的路线 2006年 时间限制: 2 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题目描述 Description Z小镇是一个景色宜人 ...
- codevs 1001 舒适的路线(Kruskal)
传送门 Description Z小镇是一个景色宜人的地方,吸引来自各地的观光客来此旅游观光.Z小镇附近共有N(1<N≤500)个景点(编号为1,2,3,…,N),这些景点被M(0<M≤5 ...
- AC日记——舒适的路线 codevs 1001 (并查集+乱搞)
1001 舒适的路线 2006年 时间限制: 2 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题解 查看运行结果 题目描述 Description Z小镇是 ...
- Codevs 1001 舒适的路线 2006年 NOIP全国联赛提高组
1001 舒适的路线 2006年 时间限制: 2 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题目描述 Description Z小镇是一个景色宜人的地方,吸引来自各地的观 ...
- codevs 1001 舒适的路线 (并查集)
题目描述 Description Z小镇是一个景色宜人的地方,吸引来自各地的观光客来此旅游观光. Z小镇附近共有 N(<N≤)个景点(编号为1,,,…,N),这些景点被M(<M≤)条道路连 ...
随机推荐
- 《Java疯狂讲义》(第3版)学习笔记 2 - Java语言的运行机制
内容 1.高级语言的运行机制 2.Java 语言的运行机制 1.高级语言的运行机制 高级语言主要分为编译型语言和解释型语言两类. 编译型语言是指使用专门的编译器.针对特定平台(操作系统)将高级语言源代 ...
- EasyUi 方法传递多个参数值得方法
1.项目中需要传递多个参数值 function actionFtt(value, row, index) { //传递查询需要的参数 var customerId = row.customerId;/ ...
- spark 加载文件
spark 加载文件 textFile的参数是一个path,这个path可以是: 1. 一个文件路径,这时候只装载指定的文件 2. 一个目录路径,这时候只装载指定目录下面的所有文件(不包括子目录下面的 ...
- JavaWeb学习笔记——Ajax
- URL中“#” “?” &“”号的作用
URL中"#" "?" &""号的作用 阅读目录 1. # 2. ? 3. & 回到顶部 1. # 10年9月,twit ...
- mysql 查询表结构 查询索引
首先进入到mysql里 show databases; 选择数据库 use xxxcms; 查询数据库下的表结构 show create table 表名; 这样看着不太好可以后面加\G show c ...
- centos 7.0 nginx 1.7.9 安装过程
系统用的是centos 7.0最小化安装 我现在安装完了 写一下步骤 还没完全搞懂 首先安装GCC [root@localhost ~]# yum install -y gcc gcc-c++ 已加载 ...
- 对AccessViolationException的一些总结
引言 开发Winform程序时,应用程序出现了异常,整个应用程序崩溃自动退出了.在断点调试后,发现异常是AccessViolationException.所以对周围的语句加上了异常的处理机制.但是接下 ...
- [CentOS7]安装mysql遇到的问题
摘要 在安装mysql的时候,遇到了一些问题,这里列出所遇到的问题. yum list mysql-server 在使用命令yum list mysql-server安装mysql的时候,遇到如图所示 ...
- eclipse将引用了第三方jar包的java项目打成jar包
今天用java开发了一个项目,想要打成jar包,并在linux环境下运行.但是运行时引用的第三方jar包却显示classNotFind错误. 于是查了一下解决办法,在此贴出来,方便以后查阅. 用Ecl ...