题目链接: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. 夺命雷公狗---Thinkphp----14之前台的首页完善

    我们先来完成我们的首页部分,我们首页要先来完成到焊条部分和右侧的导航部分: 我们先来写控制器: 然后在右侧遍历头部遍历出我们所需要的数据: 因为我们的右侧是引入进来的,所以我们需要到右侧视图下进行遍历 ...

  2. Logic BIST

    Logic BIST is crucial for many applications, in particular for life-critical and mission-critical ap ...

  3. keep your work after network broken

    如下设置可以保证在网络中断后tso仍然可以继续active,并等到下一次reconnect sys1.tcpparms(tnprof7d) -- Dataset name and PDS name b ...

  4. SQL Server 最小化日志操作解析,应用

    Sql Server 中数据库在BULK_LOGGED/SIMPLE模式下的一些操作会采用最小化日志的记录方式,以减小tran log落盘日志量从而提高整体性能. 这里我简单介绍下哪些操作在什么样的情 ...

  5. nodejs和mongodb实践

    首先,当然是都安装了nodejs 和mongodb了.这必须是前提条件. 现在我们要用nodejs连接mongodb数据库了.我这里只是一个非常非常简单是实践,初学嘛.更深入的学习之后,我会仔细写笔记 ...

  6. Delphi Xe2 后的版本如何让Delphi程序启动自动“以管理员身份运行"

    由于Vista以后win中加入的UAC安全机制,采用Delphi开发的程序如果不右键点击“以管理员身份运行”,则会报错. 在XE2以上的Delphi版本处理这个问题已经非常简单了. 右建点击工程,选择 ...

  7. Java简单数据类型转换

      1. Integer<---String   (1) Integer x = new Integer(Integer.parseInt(String)); 2. Integer<--- ...

  8. ThinkPHP 3.2.3的 R 方法

    R方法是可以调用其他的Controller中的方法, 例如 我想在Mit/DebugController.class.php中调用Foo/DoController.class.php中的share方法 ...

  9. Unicode : RLO

    分类:备忘,Unicode,Perl 我们一般的输入文字的方向是从左往右,但是世界上总有特例,阿拉伯国家是从右到左的书写方式.经常看到微信里面好友得瑟,也就拿过来总结一下. 每个语言都能实现字符串反转 ...

  10. Angular.js为什么如此火呢?

    在本文中让我们来逐步发掘angular为什么如此火: Angular.js 是一个MV*(Model-View-Whatever,不管是MVC或者MVVM,统归MDV(model Drive View ...