题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=1050

题意:给出一个带权图。求一条s到t的路径使得这条路径上最大最小边的比值最小?

思路:将边排序。枚举最小边,然后将边一个一个插到并查集里,s和t联通时计算更新答案。

struct node
{
    int u,v,w;

    void get()
    {
        RD(u,v,w);
    }
};

int cmp(node a,node b)
{
    return a.w<b.w;
}

int n,m,s,t;
node a[N*10];

i64 Gcd(i64 x,i64 y)
{
    return !y?x:Gcd(y,x%y);
}

int S[N];

int get(int x)
{
    if(S[x]!=x) S[x]=get(S[x]);
    return S[x];
}

void Union(int x,int y)
{
    x=get(x);
    y=get(y);
    if(x!=y) S[x]=y;
}

int main()
{
    RD(n,m);
    int i,j;
    FOR1(i,m) a[i].get();
    sort(a+1,a+m+1,cmp);
    RD(s,t);
    i64 ansX=1,ansY=30000,temp;
    int flag=0;
    FOR1(i,m)
    {
        FOR1(j,n) S[j]=j;
        FOR(j,i,m)
        {
            Union(a[j].u,a[j].v);
            if(get(s)==get(t)) break;
        }
        if(j<=m)
        {
            flag=1;
            if(ansY*a[i].w>ansX*a[j].w)
            {
                ansX=a[i].w;
                ansY=a[j].w;
            }
        }
    }
    if(!flag) puts("IMPOSSIBLE");
    else
    {
        temp=Gcd(ansX,ansY);
        ansX/=temp;
        ansY/=temp;
        if(ansX==1) PR(ansY);
        else printf("%lld/%lld\n",ansY,ansX);
    }
    return 0;
}

BZOJ 1050 旅行comf(枚举最小边-并查集)的更多相关文章

  1. BZOJ 1050 旅行comf 并查集+枚举下界

    题目链接: https://www.lydsy.com/JudgeOnline/problem.php?id=1050 题目大意: 给你一个无向图,N(N<=500)个顶点, M(M<=5 ...

  2. BZOJ 1050 旅行comf

    题目如下: 题目描述 给你一个无向图,N(N<=500)个顶点, M(M<=5000)条边,每条边有一个权值Vi(Vi<30000).给你两个顶点S和T,求一条路径,使得路径上最大边 ...

  3. [BZOJ]1050 旅行comf(HAOI2006)

    图论一直是小C的弱项,相比其它题型,图论的花样通常会更多一点,套路也更难捉摸. Description 给你一个无向图,N(N<=500)个顶点, M(M<=5000)条边,每条边有一个权 ...

  4. HYSBZ - 1050(旅行comf 并查集Java实现)

    HYSBZ - 1050(旅行comf Java实现) 原题地址 解法:枚举每一条边,对于这条边,我们需要找到集合中和其值相差最小的最大边,这个集合是指与包括i边在内的ST联通集.对于这一要求,我们只 ...

  5. POJ 2912 Rochambeau(难,好题,枚举+带权并查集)

    下面的是从该网站上copy过来的,稍微改了一点,给出链接:http://hi.baidu.com/nondes/item/26dd0f1a02b1e0ef5f53b1c7 题意:有N个人玩剪刀石头布, ...

  6. BZOJ 1050 旅行

    Description 给你一个无向图,N(N<=500)个顶点, M(M<=5000)条边,每条边有一个权值Vi(Vi<30000).给你两个顶点S和T,求一条路径,使得路径上最大 ...

  7. BZOJ 1050 旅行(并查集)

    很好的一道题.. 首先把边权排序.然后枚举最小的边,再依次添加不小于该边的边,直到s和t联通.用并查集维护即可. # include <cstdio> # include <cstr ...

  8. BZOJ 1998: [Hnoi2010]Fsk物品调度 [置换群 并查集]

    传送门 流水线上有n个位置,从0到n-1依次编号,一开始0号位置空,其它的位置i上有编号为i的盒子.Lostmonkey要按照以下规则重新排列这些盒子. 规则由5个数描述,q,p,m,d,s,s表示空 ...

  9. 【BZOJ】【3673】可持久化并查集 & 【3674】可持久化并查集加强版

    可持久化并查集 Orz hzwer & zyf 呃学习了一下可持久化并查集的姿势……其实并查集就是一个fa数组(可能还要带一个size或rank数组),那么我们对并查集可持久化其实就是实现一个 ...

随机推荐

  1. zw版_Halcon-delphi系列教程_卫星航拍精确打击目标自动识别

    <zw版·Halcon-delphi系列原创教程> 卫星航拍精确打击目标自动识别 这几天,俄罗斯空军在叙利亚大显神威,美军有意见了,说俄罗斯是狂轰滥炸,不是精确打击.      不过,战斗 ...

  2. [sinatra] Just Do It: Learn Sinatra, Part One Darren Jones

    1. Install sinatra gem gem install sinatra --no-ri --no-rdoc 2. Basic App #!/usr/bin/ruby require 's ...

  3. php导出word格式数据的代码

    <?php /** * 生成word文档的类 * by www.jbxue.com */ class word {          function start()     {         ...

  4. Writable、WritableComparable和comparators

    hadoop的序列化格式 hadoop自身的序列化存储格式就是实现了Writable接口的类,他只实现了前面两点,压缩和快速.但是不容易扩展,也不跨语言. 我们先来看下Writable接口,Writa ...

  5. pycharm如何调试scrapy

    其实很简单,按下右上角的这个按钮 点击 跳出一个弹框 选择好 这三个基本就可以了 script是要运行的脚本即python中的Lib中的site-packages里面对应模块的执行文件(不懂的话,自行 ...

  6. Mac OS finder : 显示和隐藏文件[夹] show and hide files or folders

    Finder默认是不显示隐藏文件[夹]的,要显示出怎么办? 要显示的话,可以GUI(graphic user interface)和CLI(command line interface)两种方式 CL ...

  7. oracle 自定义聚合函数(MAX_O3_8HOUR_ND) 计算最大的臭氧8小时滑动平均值

    create or replace function MAX_O3_8HOUR_ND(value NUMBER) return NUMBER parallel_enable aggregate usi ...

  8. 【jQuery UI 1.8 The User Interface Library for jQuery】.学习笔记.7.Slider控件

    默认slider的安装启用 为slider自定义风格 修改配置选项 创建一个垂直的slider 设置最大最小值,和默认值 启用多个 手柄 和 范围 slider内置的回调事件 slider的方法 这个 ...

  9. editPlus,3.7V 注册码

    editPlus,3.7V 注册码: username:linzhihui password:5A2B6-69740-D9CDE-79702-C9CCD

  10. git 上传本地文件到github

    git 上传本地文件到github 1 git config --global user.name "Your Real Name" 2 git config --global u ...