题目链接

其实没有辣么难,

暴力枚举最小边是哪条边,然后每次跑一边最小生成树,

当$s,t$刚好联通时最后加的边的权值就是当前的最大边最小的情况

然后判断一下,更新答案就好

/**************************************************************
Problem: 1050
User: zhangheran
Language: C++
Result: Accepted
Time:2656 ms
Memory:2072 kb
****************************************************************/ #include<iostream>
#include<cstdio>
//#include"suqingnian.h"
#include<algorithm>
using namespace std; template<typename _Element_gcd>
_Element_gcd
_gcd(_Element_gcd _m, _Element_gcd _n)
{
while (_n != )
{
_Element_gcd _t = _m % _n;
_m = _n;
_n = _t;
}
return _m;
} int n,m;
struct data{
int u;int v;int value;
friend bool operator <(const data &a,const data &b) {return a.value<b.value;}
}edge[];int cnt;
void add(int u,int v,int value)
{
edge[++cnt].u=u;
edge[cnt].v=v;
edge[cnt].value=value;
return ;
} int fa[];
inline void build() {for(int i=;i<=n;i++) fa[i]=i;return ;}
int find(const int &x) {return fa[x]==x?x:fa[x]=find(fa[x]); }
inline bool check(const int &a,const int &b) {return find(a)==find(b);}
inline void merge(const int &x,const int &y) {fa[fa[x]]=fa[y]; return ;} int u,v,value;
int s,t;int ans1,ans2;
int now1,now2,num;
bool book=;bool ins;
int main()
{
scanf("%d%d",&n,&m);
for(int i=;i<=m;i++) scanf("%d%d%d",&u,&v,&value),add(u,v,value);
scanf("%d%d",&s,&t);
sort(edge+,edge+m+);
for(int i=;i<=m;i++){
build();now1=edge[i].value;ins=false;
for(int j=i;j<=m;j++)
if(!check(edge[j].u,edge[j].v)){
merge(edge[j].u,edge[j].v);
if(check(s,t)){now2=edge[j].value;book=true;ins=true;break;}
}
if(ins){
if(ans1==||now1*ans2>ans1*now2) ans1=now1,ans2=now2;
if(ans1!=&&ans2!=)num=_gcd(ans1,ans2),ans1/=num,ans2/=num;}
}
if(!book){puts("IMPOSSIBLE");return ;}
if(ans2==) {puts("");return ;}
num=_gcd(ans1,ans2);
ans1/=num,ans2/=num;
if(ans1==) {printf("%d",ans2);return ;}
printf("%d/%d",ans2,ans1);
return ;
}

bzoj1050旅行的更多相关文章

  1. BZOJ-1050 旅行comf 并查集+乱搞

    好久以前codevs上做过的,拿着改了改.. 1050: [HAOI2006]旅行comf Time Limit: 10 Sec Memory Limit: 162 MB Submit: 2194 S ...

  2. BZOJ1050 旅行comf(kruskal)

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

  3. bzoj1050 旅行

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

  4. 【BZOJ1050】[HAOI2006]旅行

    [BZOJ1050][HAOI2006]旅行 题面 bzoj 洛谷 题解 先将所有边从小往大排序 枚举钦定一条最小边 再枚举依次枚举最大边,如果两个点联通了就\(break\)统计答案即可 代码 #i ...

  5. 【BZOJ1050】[HAOI2006]旅行comf 并查集

    [BZOJ1050][HAOI2006]旅行comf Description 给你一个无向图,N(N<=500)个顶点, M(M<=5000)条边,每条边有一个权值Vi(Vi<300 ...

  6. 【bzoj1050】 旅行comf

    http://www.lydsy.com/JudgeOnline/problem.php?id=1050 (题目链接) 题意 给出一个无向图,求图中两点间某条路径使得最大权值除以最小权值的值最小 So ...

  7. BZOJ1050 HAOI2006旅行(最小生成树+LCT)

    暴力枚举路径中权值最小边是哪个,然后求出边权不小于它的边的最小生成树,即可保证该路径上最大值最小.暴力当然可以过,这里使用LCT维护.注意数据中有自环. #include<iostream> ...

  8. 【bzoj1050】[HAOI2006]旅行comf

    1050: [HAOI2006]旅行comf Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 2813  Solved: 1534[Submit][St ...

  9. bzoj1050【HAOI2006】旅行comf

    1050: [HAOI2006]旅行comf Time Limit: 10 Sec  Memory Limit: 162 MB Submit: 2205  Solved: 1174 [Submit][ ...

随机推荐

  1. springmvc jpa

    昨天帮同学搭建了一个springmvc+jpa+beetl模板引擎的项目环境,供参考. https://files.cnblogs.com/files/startnow/lntu-demo.zip 数 ...

  2. Creating Procedural Textures

    [Creating Procedural Textures] 由程序主生贴图,然后设置给Material.首先定义需要的数据: 在Start方法中完成初始化,注意设置的是_MainTex. 实现Gen ...

  3. Spark之 SparkSql、DataFrame、DataSet介绍

    SparkSql SparkSql是专门为spark设计的一个大数据仓库工具,就好比hive是专门为hadoop设计的一个大数据仓库工具一样. 特性: .易整合 可以将sql查询与spark应用程序进 ...

  4. flume 转

    http://blog.csdn.net/xiao_jun_0820/article/details/38111305

  5. Hibernate中Session与本地线程绑定

    ------------------siwuxie095 Hibernate 中 Session 与本地线程绑定 1.Session 类似于 JDBC 的连接 Connection 2.Session ...

  6. Openssl crl命令

    一.简介 crl命令用于处里PME或DER格式的CRL文件 二.语法 openssl crl [-inform PEM|DER] [-outform PEM|DER] [-text] [-in fil ...

  7. loadrunner load generator设置init人数

    Load Generator中还有一个很重要的设置.就是用来设置init人数的,我们在运行脚本的时候会发现,在场景监控中,init默认不会超过50个人,也就是最大并发是50个人,我们想使用超过50个人 ...

  8. [C++] Pen questions & linux cmd

    1.宏替换,完全展开替换,注意带来副作用 #include <stdio.h>#define 打印语句 printf(“hello”); Void main(void) { If (1) ...

  9. CircRNA 环化RNA

    2016国自然新秀CircRNA的研究策略和分析  

  10. javascript总结37:DOM:innerText 和 innerHTML

    innerText 和 innerHTML 作用: 给双标签的元素设置内容/获取双标签里面的内容 不同点: innerText 只是用于获取文本或设置文本 innerHTML 不仅可以用于设置/获取文 ...