博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
NYoj 最舒适的路线
阅读量:7296 次
发布时间:2019-06-30

本文共 1211 字,大约阅读时间需要 4 分钟。

 题目链接:http://acm.nyist.edu.cn/JudgeOnline/problem.php?pid=711

 

分析:枚举速度最大的边,找出能够从S到达T的最大速度,然后求出它们的比值,与已经求出的比值进行比较,如果比之前的比值小,则更新比值,记录此种情况下的最大速度和最小速度,直到枚举到从S不能到达T,跳出循环。求出最大速度和最小速度的比值即可。如果从S可以到达T,说明S和T属于同一个集合,因此可以利用并查集来判断从S是否可以到达T。

 

代码:

1 #include 
2 #include
3 #include
4 #include
5 #include
6 #include
7 #include
8 #include
9 #include
10 using namespace std;11 12 #define INF 0x3fffffff13 14 int f[5005];15 int n,m;16 17 struct lu18 {19 int start,end,speed;20 }num[5005];21 22 bool cmp(lu a,lu b)23 {24 return a.speed > b.speed;25 }26 27 int gcd(int a, int b) 28 { 29 while(b != 0) 30 { 31 int r = a % b; 32 a = b; 33 b = r; 34 } 35 return a; 36 } 37 38 void init(int n)39 {40 for(int i=0;i<=n;i++)41 f[i]=i;42 }43 44 int find(int x)45 {46 if(x==f[x])47 return f[x];48 f[x]=find(f[x]);49 return f[x];50 }51 52 void Union(int x,int y)53 {54 int p=find(x);55 int q=find(y);56 if(p > q) 57 f[p] = q; 58 else 59 f[q] = p;60 }61 int main()62 {63 int t;64 int a,b,i,j,aa,bb;65 scanf("%d",&t);66 while(t--){67 scanf("%d %d",&n,&m);68 for(i=0;i

 

转载于:https://www.cnblogs.com/wangmengmeng/p/4947593.html

你可能感兴趣的文章
使用Simditor和七牛上传图片
查看>>
处理微信文章中防盗链问题
查看>>
开发检测MySQL主从同步插件
查看>>
cacti0.8.8安装文档
查看>>
二维变长数组
查看>>
码农如何快速打造一个有设计感的网站
查看>>
使用RMAN VALIDATE验证数据和备份
查看>>
VMware中三种网络连接的区别
查看>>
RAID重组和数据库数据的修复与验证
查看>>
Linux 下软件的安装
查看>>
.htm .html .shtml的区别
查看>>
安装mysql
查看>>
在项目中配置Nexus Repository的信息
查看>>
基于CentOS 6.8平台最新源代码包编译安装企业版MariaDB数据库
查看>>
网络蜘蛛Spider 工作原理
查看>>
xcode 本地git代码管理
查看>>
ASP编程常用的15个非常有用的代码及用法
查看>>
使用xmanager连接centos5.5
查看>>
SQL syntax-log2
查看>>
mysql limt参数
查看>>