(ssl1312)P2502 2006河南省赛第一试 旅行

2024-01-30 05:58

本文主要是介绍(ssl1312)P2502 2006河南省赛第一试 旅行,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

2006河南省赛第一试 旅行

Time Limit:2000MS

Memory Limit:65536K

Total Submit:155

Accepted:57

Description

  Z小镇是一个景色宜人的地方,吸引来自各地的观光客来此旅游观光。Z小镇附近共有N个景点(编号为1,2,3,…,N),这些景点被M条道路连接着,所有道路都是双向的,两个景点之间可能有多条道路。也许是为了保护该地的旅游资源,Z小镇有个奇怪的规定,就是对于一条给定的公路Ri,任何在该公路上行驶的车辆速度必须为Vi。速度变化太快使得游客们很不舒服,因此从一个景点前往另一个景点的时候,大家都希望选择行使过程中最大速度和最小速度的比尽可能小的路线,也就是所谓最舒适的路线。

Input

第一行包含两个正整数,N和M。
接下来的M行每行包含三个正整数:x,y和v。表示景点x到景点y之间有一条双向公路,车辆必须以速度v在该公路上行驶。
最后一行包含两个正整数s,t,表示想知道从景点s到景点t最大最小速度比最小的路径。s和t不可能相同。

Output

如果景点s到景点t没有路径,输出“IMPOSSIBLE”。否则输出一个数,表示最小的速度比。如果需要,输出一个既约分数。

Sample Input

样例1
4 2
1 2 1
3 4 2
1 4

样例2
3 3
1 2 10
1 2 5
2 3 8
1 3

样例3
3 2
1 2 2
2 3 4
1 3

Sample Output

样例1
IMPOSSIBLE

样例2
5/4

样例3
2

Hint

【数据范围】
1<N<=500
1<=x,y<=N,0<v<30000,x≠y
0<M<=5000

Source

elba
   题解:本题是并查集(并查集详见:这里)`
      本题思路为先快排(题目要求最小比),再去合并(本次不需要压缩路径),最后再用个循环去找最小比。
      不过输出时有要求用分数,所以要化简,便需要辗转相除法。

varx,y,v,f:array[0..5000]of longint;n,m,s,t,i,j,min,max,d:longint;
procedure kp(l,r:longint);//快排
vari,j,mid:longint;
begini:=l; j:=r;mid:=v[(l+r)div 2];repeatwhile v[i]<mid do inc(i);while v[j]>mid do dec(j);if i<=j thenbeginx[0]:=x[i]; x[i]:=x[j]; x[j]:=x[0];y[0]:=y[i]; y[i]:=y[j]; y[j]:=y[0];v[0]:=v[i]; v[i]:=v[j]; v[j]:=v[0];inc(i); dec(j);end;until i>j;if l<j then kp(l,j);if i<r then kp(i,r);
end;
function find(a:longint):longint;//找爸爸(笑~)
beginif f[a]<0 then exit(a)elsebeginf[a]:=find(f[a]);exit(f[a])end;
end;
procedure fusion(a,b:longint);//合并
varx,y:longint;
beginx:=find(a); y:=find(b);if x<>y thenbeginf[x]:=f[x]+f[y];f[y]:=x;end;
end;
function chu(a,b:longint):longint;//辗转相除法
beginif b=0 then exit(a)else chu:=chu(b,a mod b);
end;
beginread(n,m);for i:=1 to m do read(x[i],y[i],v[i]);read(s,t);kp(1,m);max:=v[m]+1; min:=v[1];//最大比啦for i:=1 to m do//慢慢地枚举,直到找到最小比beginfillchar(f,sizeof(f),$ff);j:=i-1;while (j<m) and (find(s)<>find(t)) do//没超出范围,而且不是同一集合就合并begininc(j);fusion(x[j],y[j]);end;if find(s)<>find(t) then break;//还不是就是去不了了(排除程序自身错误)if v[j]*min<v[i]*max then begin max:=v[j]; min:=v[i]; end;//找最小比end;if max*v[1]>min*v[m] then writeln('IMPOSSIBLE')//没有路径elsebegind:=chu(min,max);//最大公因数max:=max div d;//化简min:=min div d;if max mod min=0 then writeln(max div min)else writeln(max,'/',min);end;
end.

这篇关于(ssl1312)P2502 2006河南省赛第一试 旅行的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/659279

相关文章

半年高达552亿元,锁定云第一,中国电信天翼云紧追不舍

【科技明说 | 科技热点关注】 刚才我注意到中国电信公布2024年中期业绩,报告期内,中国电信实现营业收入为人民币2660亿元,同比增长2.8%,其中服务收入为人民币2462亿元,同比增长4.3%;净利润为人民币218亿元,同比增长8.2%。 其中亮点,2024年上半年,天翼云保持快速增长,收入达到了552亿元,同比增长20.4%,占服务收入比升至22.4%,市场头部地位进一步巩固。 为

双项第一!鼎捷强势领跑PLM市场

近日,国际数据公司IDC发布了《中国PLM市场分析及厂商份额,2023:创新左移》 报告数据显示鼎捷PLM2023年收入增长率39.5%,收入增速市场第一 鼎捷在多个细分行业市场中保持领先,在装备制造PLM领域市场份额达到7.9%市占率第一 IDC《中国PLM市场分析及厂商份额,2023:创新左移》(Doc#CHC52050724,2024年8月) 报告数据显示,2023年中国PLM软

社交平台找旅游搭子一起旅行靠谱吗?答案是不要太爽!

哈喽小伙伴们,今天要跟大家分享一个超级棒的小程序——咕哇找搭子!作为一个热爱自由行的人,最头疼的就是找不到志同道合的小伙伴。但自从用了这个咕哇小程序后,一切都变得简单又充满乐趣啦!🎉 上个月,我计划去云南旅行,就试着在咕哇上发布了我的行程信息。没想到很快就收到了几位朋友的回应,其中一位叫小莲的朋友特别投缘。我们不仅目的地一样,就连兴趣爱好都出奇地相似,于是我们就决定一起出发啦!👭

2024全国大学省数学建模竞赛A题-原创参考论文(部分+第一问代码)

一问题重述 1.1 问题背景  "板凳龙",又称"盘龙",是浙闽地区的传统地方民俗文化活动。这种独特的表演艺术形式融合了中国传统龙舞的精髓和地方特色,展现了人们对美好生活的向往和对传统文化的传承。 在板凳龙表演中,人们将少则几十条,多则上百条的板凳首尾相连,形成蜿蜒曲折的"龙"形。这种创新的表演方式不仅展现了民间艺术的智慧,也体现了集体协作的精神。盘龙时,龙头在前领头,龙身和龙尾相随盘旋,整

Google 实现量子霸权!3分20秒运算,世界第一超算要跑1万年!

大数据技术与架构 点击右侧关注,大数据开发领域最强公众号! 暴走大数据 点击右侧关注,暴走大数据! By  大数据技术与架构 场景描述:谷歌宣称“量子霸权”已经实现,他们首次在实验中证明了量子计算机对于传统架构计算机的优越性:在世界第一超算 Summit 需

全网第一 | Flink学习面试灵魂40问答案,文末有福利!

大数据技术与架构 点击右侧关注,大数据开发领域最强公众号! 暴走大数据 点击右侧关注,暴走大数据! 来源:王知无 作者:王知无 By 暴走大数据 场景描述:这是一份Flink学习面试指北。看看你搞清楚自己的定位没有? 关键词:Flink 学

旅行商问题 | Matlab基于混合粒子群算法GA-PSO的旅行商问题TSP

目录 效果一览基本介绍建模步骤程序设计参考资料 效果一览 基本介绍 混合粒子群算法GA-PSO是一种结合了遗传算法(Genetic Algorithm, GA)和粒子群优化算法(Particle Swarm Optimization, PSO)的优化算法。在解决旅行商问题(Traveling Salesman Problem, TSP)时,这种混合算法可以结合两种算法的优点

【硬刚ES】ES基础(十五)第一部分总结

本文是对《【硬刚大数据之学习路线篇】从零到大数据专家的学习指南(全面升级版)》的ES部分补充。

力扣第一题:两数之和

文章目录 需求分析代码结尾 需求 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案,并且你不能使用两次相同的元素。 你可以按任意顺序返回答案。 示例 1: 输入:nums = [2,7,11,15], target = 9 输出:[

项目实战系列: 家居购项目 第一部分

家居购项目 🐀Java后端经典三层架构🐇MVC模型🐇开发环境搭建🐇会员注册🍉前端JS校验🍉后端实现 🐇会员登陆 🐀Java后端经典三层架构 分层对应包说明web层com.zzw.furns.web/servlet/controller/handler接受浏览器发送数据; 调用相关的service;根据执行结果,返回页面数据service层com.zzw