bzoj 1050: [HAOI2006]旅行comf&&【codevs1001】
Description
Input
Output
Sample Input
4 2
1 2 1
3 4 2
1 4
【样例输入2】
3 3
1 2 10
1 2 5
2 3 8
1 3
【样例输入3】
3 2
1 2 2
2 3 4
1 3
Sample Output
IMPOSSIBLE
【样例输出2】
5/4
【样例输出3】
2
#include<cstdio>
#include<cstring>
#include<algorithm>
const int N=,M=;
int read(){
int ans=,f=,c=getchar();
while(c<''||c>''){if(c=='-') f=-; c=getchar();}
while(c>=''&&c<=''){ans=ans*+(c-''); c=getchar();}
return ans*f;
}
int S,T,n,m,ansmx,ansmn,g;
struct node{int from,to,w;}e[*M];
bool cmp(node a,node b){return a.w<b.w;}
int f[N];
int find(int x){while(f[x]!=x) x=f[x]=f[f[x]]; return x;}
int gcd(int x,int y){return !y?x:gcd(y,x%y);}
int main(){
n=read(); m=read();
for(int i=;i<=m;i++) e[i].from=read(),e[i].to=read(),e[i].w=read();
S=read(); T=read();
std::sort(e+,e++m,cmp);
int now=;
while(now<=m){
int mn=-,mx=-,k;
for(int i=;i<=n;i++) f[i]=i;
for(k=now;k<=m;k++){
int p=find(e[k].from),q=find(e[k].to);
if(p==q) continue;
f[q]=p; if(find(S)==find(T)){mx=e[k].w; break;}
}//printf("[%d %d]\n",k,mx);
if(mx==-){
if(!ansmx) return printf("IMPOSSIBLE\n"),;
break;
}
for(int i=;i<=n;i++) f[i]=i;
for(;k;k--){
int p=find(e[k].from),q=find(e[k].to);
if(p==q) continue; //printf("QAQ[%d %d]\n",p,q);
f[q]=p; if(find(S)==find(T)){mn=e[k].w; now=k+; break;}
}//printf("[%d %d]\n",k,mn);
if(mn==-){
if(!ansmn) return printf("IMPOSSIBLE\n"),;
break;
}
if((!ansmn&&!ansmx)||mx*ansmn<ansmx*mn) ansmx=mx,ansmn=mn;
if((g=gcd(ansmx,ansmn))!=) ansmx/=g,ansmn/=g;
}
//if((g=gcd(ansmx,ansmn))!=1) ansmx/=g,ansmn/=g; //printf("[%d]\n",g);
if(ansmn==) printf("%d\n",ansmx);
else printf("%d/%d\n",ansmx,ansmn);
return ;
}
bzoj 1050: [HAOI2006]旅行comf&&【codevs1001】的更多相关文章
- BZOJ 1050 [HAOI2006]旅行comf
1050: [HAOI2006]旅行comf Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 1889 Solved: 976[Submit][Sta ...
- BZOJ 1050: [HAOI2006]旅行comf( 并查集 )
将edge按权值排序 , O( m² ) 枚举边 , 利用并查集维护连通信息. ------------------------------------------------------------ ...
- bzoj 1050: [HAOI2006]旅行comf(codevs.cn 1001 舒适的路线) 快排+并查集乱搞
没用的话:好像很久没发博客了,主要是懒太蒟找不到水题.我绝对没弃坑...^_^ 还用些话:本文为博主原创文章,若转载请注明原网址和作者. 进入正题: 先pa网址: bzoj :http://www.l ...
- bzoj 1050 [HAOI2006]旅行comf (并查集)
题目链接: https://www.lydsy.com/JudgeOnline/problem.php?id=1050 思路: 先将每条边的权值排个序优先小的,然后从小到大枚举每一条边,将其存到并查集 ...
- bzoj 1050 [HAOI2006]旅行comf——kruscal
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1050 因为还有Impossible的情况,所以想到了kruscal.(?) 但好像不太行.然 ...
- BZOJ 1050: [HAOI2006]旅行comf (并查集 或 单调队列)
这是建空间后做的第一道题啊= =好水 排序,枚举最小边,然后并查集求出联通时的最大边 或者排次序,从小到大插边,如果插边时最小的边拿掉不会使s与t不联通,就删去。 code: #include< ...
- bzoj 1050: [HAOI2006]旅行comf【枚举+并查集】
m是5000,就想到了直接枚举比例 具体做法是是先把边按照边权从小到大排序,然后先枚举最小边权,再枚举最大边权,就是从最小边权里一个一个加进并查集里,每次查st是否联通,联通则退出,更新答案 #inc ...
- BZOJ 1050 [HAOI2006]旅行comf(最小生成树)
题意 第一行包含两个正整数,N和M.下来的M行每行包含三个正整数:x,y和v.表示景点x到景点y之间有一条双向公路 ,车辆必须以速度v在该公路上行驶.最后一行包含两个正整数s,t,表示想知道从景点s到 ...
- 【BZOJ 1050】1050: [HAOI2006]旅行comf (动态SPFA)
1050: [HAOI2006]旅行comf Description 给你一个无向图,N(N<=500)个顶点, M(M<=5000)条边,每条边有一个权值Vi(Vi<30000). ...
随机推荐
- Jexus支持HTTPS协议
众所周知,在HTTPS页面请求HTTP资料的时候,现代浏览器会拦截,提示用户是否继续,或者直接拦截,提示都不出来. 最近给自己做了个快速书签工具,点击书签就直接把书签发送到服务器地址,然后保存到我的网 ...
- CentOs 版本名字说明
What images are in this directory CentOS-6.3-x86_64-netinstall.iso This is the network install and r ...
- ADVICE FOR SHORT-TERM MACHINE LEARNING RESEARCH PROJECTS(短期机器学习研究的建议)
– Tim Rocktäschel, Jakob Foerster and Greg Farquhar, 29/08/2018 Every year we get contacted by stude ...
- HTML5的 input:file上传类型控制(转载)
http://www.haorooms.com/post/input_file_leixing HTML5的 input:file上传类型控制 2014年8月29日 66352次浏览 一.input: ...
- Hessian 2.0 序列化协议 - Hessian 2.0 Serialization Protocol 翻译
Hessian是一种轻量.快速的web协议,在微服务场景下经常被使用. Hessian协议实际上包含两种含义: 1. Web网络通信远程调用服务,具体可以参考:http://hessian.cauch ...
- Linux 简单socket实现UDP通信
服务器端 #include <stdio.h> #include <stdlib.h> #include <sys/types.h> #include <sy ...
- matlab mex 小o -o 出错
https://github.com/kyamagu/mexopencv/issues/117 就是说2014a以后的版本mex -o 选项变成了 -output 蛋疼,这有什么好改的.找了好久才 ...
- iOS-开发,拨打电话
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:[NSString stringWithFormat:@"te ...
- OpenCV平滑处理示例代码
#include<cv.h> #include<highgui.h> int main(int argc, char** argv) { IplImage* img = cvL ...
- windows apache启动报错
Windows启动Apache时报错 he requested operation has failed 有可能80端口被占或者项目路径不存在等 首先找到问题原因 cmd--命令端--切换到apach ...