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. threejs 通过bufferGeometry处理每一个点的位置和颜色

    let positions = new Float32Array(points.length * 3); let colors = new Float32Array(points.length * 3 ...

  2. Spring boot启动原理

    1.入口类 /** * springboot应用的启动入口 */ @RestController @SpringBootApplication public class SampleApplicati ...

  3. Git自动换行符

    http://blog.csdn.net/jonathan321/article/details/51988242?locationNum=2 不同的操作系统有不同的换行符格式,跨平台协作时需要考虑版 ...

  4. Java--普通代码块静态代码块执行顺序

    class B { public B() { super(); System.out.println("构造器B"); } { System.out.println("普 ...

  5. Flask框架的学习与实战(一):开发环境搭建

    Flask是一个使用 Python 编写的轻量级 Web 应用框架.其 WSGI 工具箱采用 Werkzeug ,模板引擎则使用 Jinja2.很多功能的实现都参考了django框架.由于项目需要,在 ...

  6. Check failed: mdb_status == 0 (2 vs. 0) No such file or directory

    运行  ./examples/mnist/train_lenet.sh  时,碰到了这个问题. 一定是路径问题!!!仔细查看prototxt文件里面的各种路径!!! 解决方案: 把.prototxt里 ...

  7. 第3课 QT的诞生和本质

    1. GUI用户界面元素 (1)操作系统提供了创建用户界面元素所需要的函数 (2)各种功能不同的函数依次调用,从而创建出界面元素 (3)操作系统提供的原生函数无法直接映射到界面元素 2. 面向对象的G ...

  8. struct to point

    关键知识点:结构体--新数据类型定义及结构体变量的定义与初始化, 结构体指针变量的定义及相关应用. 结构体变量作函数参数 指向结构体变量的指针变量. 数组与结构体间的渊源始末, 当一个整体由多个数据构 ...

  9. CentOS+Tomcat环境搭建

    此次搭建是基于: CentOS release 5.6 (Final) Kernel \r on an \m 搭建准备:http://pan.baidu.com/s/1pLt1lLh apache-t ...

  10. leetcode9

    public class Solution { public bool IsPalindrome(int x) { ) { return false; } var str = x.ToString() ...