n次最小生成树kruskal

将所有的边排序,权值小的在前。

设排序后第i条边为路径中的最长边,那么这条路径一定是由1~i中的一些边组成

因为最高速和最低速的差尽量小,最高速确定了,最低速应尽量大。

所以j从i downto 1,将边j加入边集,如果此时s和t联通了(s t在并查集的一个集合中),那么找到一组可行的解:最大i.w,最小j.w,与最优解比较、更新。

如果还没联通,继续找下一个j。直到j到1还没有,那么说明i为最大边是不行的,i++继续。

代码:

#include<iostream>
#include<algorithm>
#define MaxN 505
#define MaxM 5005
using namespace std; int n,m;
struct edge{
int u,v,w;
}eg[MaxM];
bool flag=false;
int ansa=0x3f3f3f3f,ansb=;
int start,end; int pa[MaxN];
void init(){
for(int i=;i<=n;i++)pa[i]=i;
}
int find(int x){
if(x!=pa[x])pa[x]=find(pa[x]);
return pa[x];
}
void un(int x,int y){
if(find(x)==find(y))return;
pa[find(x)]=find(y);
} bool ff(edge a,edge b){
return a.w<b.w;
}
int gcd(int a,int b){
return b?gcd(b,a%b):a;
} void out(int a,int b){
if((double)a/b < (double)ansa/ansb){
int t=gcd(a,b);
ansa=a/t;
ansb=b/t;
//cout<<a<<"/"<<b<<" "<<ansa<<"/"<<ansb<<endl;
}
} int main(){
cin>>n>>m;
for(int i=;i<=m;i++){
scanf("%d%d%d",&eg[i].u,&eg[i].v,&eg[i].w);
}
cin>>start>>end; sort(eg+,eg++m,ff); for(int i=;i<=m;i++){
init();
for(int j=i;j>=;j--){
un(eg[j].u,eg[j].v);
if(find(start)==find(end)){
out(eg[i].w,eg[j].w);
flag=true;
}
}
}
if(flag){
cout<<ansa;
if(ansb!=)cout<<'/'<<ansb;
}
else cout<<"IMPOSSIBLE";
return ;
}

code1001 舒适的路线的更多相关文章

  1. [题解]codevs1001 舒适的路线

    h3 { font-family: Consolas; color: #339966 } .math { font-family: Consolas; color: gray } 题目描述 Descr ...

  2. 求最大边/最小边的比值最小的路径 codevs 1001 舒适的路线

    codevs 1001 舒适的路线 2006年  时间限制: 2 s  空间限制: 128000 KB  题目等级 : 钻石 Diamond   题目描述 Description Z小镇是一个景色宜人 ...

  3. codevs 1001 舒适的路线(Kruskal)

    传送门 Description Z小镇是一个景色宜人的地方,吸引来自各地的观光客来此旅游观光.Z小镇附近共有N(1<N≤500)个景点(编号为1,2,3,…,N),这些景点被M(0<M≤5 ...

  4. [codevs1001]舒适的路线

    [codevs1001]舒适的路线 试题描述 Z小镇是一个景色宜人的地方,吸引来自各地的观光客来此旅游观光.Z小镇附近共有N(1<N≤500)个景点(编号为1,2,3,-,N),这些景点被M(0 ...

  5. AC日记——舒适的路线 codevs 1001 (并查集+乱搞)

    1001 舒适的路线 2006年  时间限制: 2 s  空间限制: 128000 KB  题目等级 : 钻石 Diamond 题解  查看运行结果     题目描述 Description Z小镇是 ...

  6. Codevs 1001 舒适的路线 2006年 NOIP全国联赛提高组

    1001 舒适的路线 2006年 时间限制: 2 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题目描述 Description Z小镇是一个景色宜人的地方,吸引来自各地的观 ...

  7. codevs 1001 舒适的路线 (并查集)

    题目描述 Description Z小镇是一个景色宜人的地方,吸引来自各地的观光客来此旅游观光. Z小镇附近共有 N(<N≤)个景点(编号为1,,,…,N),这些景点被M(<M≤)条道路连 ...

  8. codevs1001 舒适的路线 - 贪心 - 并查集

    题目描述 Description Z小镇是一个景色宜人的地方,吸引来自各地的观光客来此旅游观光.Z小镇附近共有N(1<N≤500)个景点(编号为1,2,3,…,N),这些景点被M(0<M≤ ...

  9. 【Kruskal】舒适的路线

    [codevs1001]舒适的路线 题目描述 Description Z小镇是一个景色宜人的地方,吸引来自各地的观光客来此旅游观光.Z小镇附近共有N(1<N≤500)个景点(编号为1,2,3,… ...

随机推荐

  1. IOS中UITableViewCell使用详解

    IOS中UITableViewCell使用详解 - (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(N ...

  2. 最佳C/C++编辑器 source insight3

    C/C++嵌入式代码编辑器source insight3下载地址 http://www.sourceinsight.com/eval.html 注册码:SI3US-361500-17409

  3. DecimalFormat格式化数字

    DecimalFormat格式化数字 DecimalFormat类也是Format的一个子类,主要作用是格式化数字.当然,在格式化数字时要比直接使用NumberFormat更加 方便,因为可以直接指定 ...

  4. bzoj 3924 [Zjoi2015]幻想乡战略游戏——动态点分治(暴力移动找重心)

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3924 度数只有20,所以从一个点暴力枚举其出边,就能知道往哪个方向走. 知道方向之后直接走到 ...

  5. highlight.js 设置行号

    原文地址:highlight.js 设置行号 博客地址:http://www.extlight.com 一.背景 笔者在开发这套博客系统时使用 Editormd 作为 Markdown 编辑器,由于不 ...

  6. Phonegap Android 项目使用Cordova

    要在已经创建好的Android项目里,使用Cordova. 1. 首先在Android Studio中创建Android项目 2. 创建cordova项目 cordova crate test com ...

  7. [转]Aspose.Words.dll 将 Word 转换成 html

    用于网站上,上传 Word 文档后显示文档内容(可看作在线阅读).代码适用于 .net 2.0 或以上版本 (使用的未注册 Aspose.Words.dll 并尝试消除试用标志) 下载地址 strin ...

  8. mysql-10临时表、复制表

    1.创建临时表 mysql临时表在我们需要保存一些临时数据时非常有用. 临时表只在当前连接可见,当关闭连接时,mysql会自动删除表并释放所有空间. 如果使用客户端创建临时表,只有在管不客户端程序时才 ...

  9. 设置putty标题栏显示固定信息

    设置好后,登录服务器后,发现标题栏又显示root@sit:/opt/ihome,没有显示成我设置的title内容.原因是: 在Terminal->Features中一定要勾选Disable re ...

  10. 20190313_C#反转绘制字符串

    效果图: 代码: private void button7_Click(object sender, EventArgs e) { Point p = new Point(10,10); Graphi ...