bzoj1050旅行
其实没有辣么难,
暴力枚举最小边是哪条边,然后每次跑一边最小生成树,
当$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旅行的更多相关文章
- BZOJ-1050 旅行comf 并查集+乱搞
好久以前codevs上做过的,拿着改了改.. 1050: [HAOI2006]旅行comf Time Limit: 10 Sec Memory Limit: 162 MB Submit: 2194 S ...
- BZOJ1050 旅行comf(kruskal)
旅行comf 给你一个无向图,N(N<=500)个顶点, M(M<=5000)条边,每条边有一个权值Vi(Vi<30000).给你两个顶点S和T,求一条路径,使得路径上最大边和最小边 ...
- bzoj1050 旅行
Description 给你一个无向图,N(N<=500)个顶点, M(M<=5000)条边,每条边有一个权值Vi(Vi<30000).给你两个顶点S和T,求一条路径,使得路径上最大 ...
- 【BZOJ1050】[HAOI2006]旅行
[BZOJ1050][HAOI2006]旅行 题面 bzoj 洛谷 题解 先将所有边从小往大排序 枚举钦定一条最小边 再枚举依次枚举最大边,如果两个点联通了就\(break\)统计答案即可 代码 #i ...
- 【BZOJ1050】[HAOI2006]旅行comf 并查集
[BZOJ1050][HAOI2006]旅行comf Description 给你一个无向图,N(N<=500)个顶点, M(M<=5000)条边,每条边有一个权值Vi(Vi<300 ...
- 【bzoj1050】 旅行comf
http://www.lydsy.com/JudgeOnline/problem.php?id=1050 (题目链接) 题意 给出一个无向图,求图中两点间某条路径使得最大权值除以最小权值的值最小 So ...
- BZOJ1050 HAOI2006旅行(最小生成树+LCT)
暴力枚举路径中权值最小边是哪个,然后求出边权不小于它的边的最小生成树,即可保证该路径上最大值最小.暴力当然可以过,这里使用LCT维护.注意数据中有自环. #include<iostream> ...
- 【bzoj1050】[HAOI2006]旅行comf
1050: [HAOI2006]旅行comf Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 2813 Solved: 1534[Submit][St ...
- bzoj1050【HAOI2006】旅行comf
1050: [HAOI2006]旅行comf Time Limit: 10 Sec Memory Limit: 162 MB Submit: 2205 Solved: 1174 [Submit][ ...
随机推荐
- Superset安装
Superset version 1.8.5 # Install superset pip install cairocffi pip install superset yum ...
- 使用Windows绘图合成多张图
[使用Windows绘图合成多张图] 1.点击图片右键选择打开方式→选择画图工具打开图片. 2.这时图片可以改变外框大小,将外框尽量弄大些. 3.点击编辑选中下拉菜单中的粘贴来源,选择需要增加进来的图 ...
- Transform & Physics
[Transform & Physics] 1.Space.Unity定义了Space枚举值,此值如下: 通常通过Space.World.Space.Self来区别一个Vector是按世界坐标 ...
- .net中delegate的使用
js中的写法: var GetEntityList = function(pParameter){ var list =[]; return list; }; var aEntityList = Ge ...
- hadoop开发环境部署——通过eclipse远程连接hadoop2.7.3进行开发
一.前言 环境: 系统:centos6.5 hadoop版本:Apache hadoop2.7.3(Windows和centos都是同一个) eclipse版本:4.2.0(juno版本,window ...
- SqlServer——系统函数
1) CASE CASE有两种使用形式:一种是简单的CASE函数,另一种是搜索型的CASE函数. [1]简单的 CASE 函数 Format: CASE input_expression WHEN w ...
- mysql 事物ACID和隔离级别
⑴ 原子性(Atomicity) 原子性是指事务包含的所有操作要么全部成功,要么全部失败回滚,这和前面两篇博客介绍事务的功能是一样的概念,因此事务的操作如果成功就必须要完全应用到数据库,如果操作失败则 ...
- java.lang.ClassCastException: com.liuyang.annocation.UserAction cannot be cast to com.liuyang.annocation2.UserAction at com.liuyang.annocation2.App.test
java.lang.ClassCastException: com.liuyang.annocation.UserAction cannot be cast to com.liuyang.annoca ...
- Statement 接口的应用(存在sql语句的注入风险)
实现简单的登录功能 import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; impo ...
- APUE(4)---文件和目录 (3)
十三.函数rename和renameat #include <stdio.h> int rename(const char *oldname, const char *newname); ...