BZOJ1050 [HAOI2006]旅行comf[并查集判图连通性]
★
Description
体现了并查集实际作用的一道题,也就是判图连通性。几句总结:
最小化或最大化一个分数时通常可以二分,但是也可以去设法最大or最小化分子分母。二分不好check的话就可以尝试后者。
据说二分带点优化其实是可以的,然而我不会。根据上面那则提示,因为最大边和最小边无法同时分别最小和最大化,所以可以先固定分母(最小边)。然后要求分子尽可能小。就是说找大于最小边的一些边让s到t连通,最小化那个最大边。那么对于最小的最大边,只要从最小边开始从小到大不停加边,直到s与t连通时立即停止即可,找到的一定是最小的最大边,正确性很容易证(最小的可行解之前的所有边都无法使其连通,而当前为第一个可行解,即最小)。于是枚举最小边并查集维护连通性就行,$O(N^{2}α(N))$稍有点卡,但是能过。可以把除法比较转换成乘法比较加一点速。
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<queue>
#define dbg(x) cerr<<#x<<" = "<<x<<endl
#define ddbg(x,y) cerr<<#x<<" = "<<x<<" "<<#y<<" = "<<y<<endl
using namespace std;
typedef long long ll;
typedef double db;
template<typename T>inline char MIN(T&A,T B){return A>B?A=B,:;}
template<typename T>inline char MAX(T&A,T B){return A<B?A=B,:;}
template<typename T>inline T _min(T A,T B){return A<B?A:B;}
template<typename T>inline T _max(T A,T B){return A>B?A:B;}
template<typename T>inline T read(T&x){
x=;int f=;char c;while(!isdigit(c=getchar()))if(c=='-')f=;
while(isdigit(c))x=x*+(c&),c=getchar();return f?x=-x:x;
}
const int N=+;
struct thx{
int u,v,w;
inline bool operator <(const thx&orz)const{
return w<orz.w;
}
}e[N];
int fa[N],n,m,s,t,p=,q=;
inline int Get(int x){return fa[x]^x?fa[x]=Get(fa[x]):x;}
inline int gcd(int a,int b){return b?gcd(b,a%b):a;} int main(){//freopen("test.in","r",stdin);//freopen("test.out","w",stdout);
read(n),read(m);
for(register int i=;i<=m;++i)read(e[i].u),read(e[i].v),read(e[i].w);
sort(e+,e+m+);read(s),read(t);
for(register int i=;i<=m;++i){
int j;for(j=;j<=n;++j)fa[j]=j;
for(j=i;j<=m;++j){
fa[Get(e[j].u)]=Get(e[j].v);
if(Get(s)==Get(t))break;
}
if(Get(s)==Get(t))if(p*e[i].w>q*e[j].w)p=e[j].w,q=e[i].w;
}
if(p>)printf("IMPOSSIBLE\n");
else p%q==?printf("%d",p/q):printf("%d/%d\n",p/gcd(p,q),q/gcd(p,q));
return ;
}
BZOJ1050 [HAOI2006]旅行comf[并查集判图连通性]的更多相关文章
- BZOJ1050: [HAOI2006]旅行comf(并查集 最小生成树)
Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 4021 Solved: 2257[Submit][Status][Discuss] Descript ...
- 【BZOJ1050】[HAOI2006]旅行comf 并查集
[BZOJ1050][HAOI2006]旅行comf Description 给你一个无向图,N(N<=500)个顶点, M(M<=5000)条边,每条边有一个权值Vi(Vi<300 ...
- BZOJ 1050: [HAOI2006]旅行comf( 并查集 )
将edge按权值排序 , O( m² ) 枚举边 , 利用并查集维护连通信息. ------------------------------------------------------------ ...
- BZOJ 1050: [HAOI2006]旅行comf (并查集 或 单调队列)
这是建空间后做的第一道题啊= =好水 排序,枚举最小边,然后并查集求出联通时的最大边 或者排次序,从小到大插边,如果插边时最小的边拿掉不会使s与t不联通,就删去。 code: #include< ...
- BZOJ-1050 旅行comf 并查集+乱搞
好久以前codevs上做过的,拿着改了改.. 1050: [HAOI2006]旅行comf Time Limit: 10 Sec Memory Limit: 162 MB Submit: 2194 S ...
- bzoj1050[HAOI2006]旅行comf(枚举+贪心+并查集)
Description 给你一个无向图,N(N<=500)个顶点, M(M<=5000)条边,每条边有一个权值Vi(Vi<30000).给你两个顶点S和T,求一条路径,使得路径上最大 ...
- HYSBZ - 1050(旅行comf 并查集Java实现)
HYSBZ - 1050(旅行comf Java实现) 原题地址 解法:枚举每一条边,对于这条边,我们需要找到集合中和其值相差最小的最大边,这个集合是指与包括i边在内的ST联通集.对于这一要求,我们只 ...
- bzoj1050: [HAOI2006]旅行comf
Description 给你一个无向图,N(N<=500)个顶点, M(M<=5000)条边,每条边有一个权值Vi(Vi<30000).给你两个顶点S和T,求一条路径,使得路径上最大 ...
- 1050. [HAOI2006]旅行【并查集+枚举】
Description 给你一个无向图,N(N<=500)个顶点, M(M<=5000)条边,每条边有一个权值Vi(Vi<30000).给你两个顶点S和T,求 一条路径,使得路径上最 ...
随机推荐
- Qt输出中文乱码的问题
/* 我遇到的情况: 文件编码为UTF-8.程序输输出中文位乱码. 解决方案: 1. 工具->选项->环境->语言: Chinese 2. 选项->文本编辑器->行为-& ...
- 【学习笔记】python3中csv文件使用
1. reader=csv.reader(f, delimiter=','):按行读取数据,reader为生成器,读取的每行数据为列表格式,可以通过delimiter参数指定分隔符. import c ...
- Linux后台运行python程序并输出到日志文件
后台运行python程序并标准输出到文件 现在有test.py程序要后台部署, 里面有输出内容 使用命令: nohup python -u test.py > test.log 2>&am ...
- 【AMAD】import-string -- 通过字符串来import一个对象
动机 简介 用法 个人评分 动机 一些情况下,你不能直接使用from ... import ...来引用对象. 比如在循环引用的情况下. 比如在一些settings文件配置中. 这时候需要另一种办法. ...
- android webview 访问 https 页面
在android 中利用webview 控件进行开发过程中,可能会遇到 webview 访问不了https://的页面如 https://www.google.com.hk 重写onReceivedS ...
- CodeForces 1249A --- Yet Another Dividing into Teams
[CodeForces 1249A --- Yet Another Dividing into Teams] Description You are a coach of a group consis ...
- Office之什么是高内聚低耦合
---恢复内容开始--- 高内聚低耦合,是软件工程中的概念,是判断设计好坏的标准,主要是面向对象的设计,主要是看类的内聚性是否高,耦合度是否低. 粗劣的说就指的是:单独模块间有着强大的凝聚力,不同的模 ...
- 单例模式(一)static、final和单例模式
static 那天我朋友问了我个问题,static和单例模式有什么区别,所以我觉得static可以讲一下 他的问题是,把对象弄成static是不是就不变了 显然,这是还没弄清楚引用和对象的区别 其实存 ...
- SpringSecurity 配置
SpringSecurity+JWT https://www.jianshu.com/p/5b9f1f4de88d https://blog.csdn.net/qq_35494808/article/ ...
- 阿里云Open API自动化脚本—ECS公网IP转化弹性公网IP
1.OpenAPI Explorer 记录一下使用阿里云 Open API 自动化/脚本化 “ECS 公网 IP 转化弹性公网 IP”的实现 全过程.原博客地址:https://www.markedi ...