bzoj1050 [HAOI2006]旅行comf
来源:互联网 发布:驿站传书 题目知乎 编辑:程序博客网 时间:2024/05/12 14:45
题目
枚举最小边,在用kruskal方法来让S与T,联通,这样比值就最优了。。
#include<bits/stdc++.h>using namespace std;int f[501];int n,m,s,t;int A1,A2;double Ans;bool have_Ans;struct edge{ int x; int y; int value; void read() { scanf("%d%d%d",&x,&y,&value); }};edge E[5001];bool cmp(edge A,edge B){ return A.value<B.value;}int find(int x){ return x==f[x]?x:f[x]=find(f[x]);}int GCD(int x,int y){ return y==0?x:GCD(y,x%y);}int main(){ //freopen("in","r",stdin); scanf("%d %d",&n,&m); for(int i=1;i<=m;i++) E[i].read(); sort(E+1,E+m+1,cmp); scanf("%d%d",&s,&t); have_Ans=false; Ans=100000000.0; for(int i=1;i<=m;i++) { for(int j=1;j<=n;j++) f[j]=j; for(int j=i;j<=m;j++) { int fx=find(E[j].x),fy=find(E[j].y); if(fx!=fy)f[fy]=fx; if(find(s)==find(t)) { have_Ans=true; if(Ans>(double)E[j].value/E[i].value) { Ans=(double)E[j].value/E[i].value; A1=E[j].value; A2=E[i].value; } } } } if(!have_Ans)cout<<"IMPOSSIBLE"; else { int gcd=GCD(A1,A2); A1/=gcd,A2/=gcd; if(A2==1)cout<<A1; else cout<<A1<<"/"<<A2; } return 0;}
阅读全文
0 0
- bzoj1050 [HAOI2006]旅行comf
- bzoj1050: [HAOI2006]旅行comf
- [BZOJ1050][HAOI2006]旅行comf
- bzoj1050【HAOI2006】旅行comf
- bzoj1050:[HAOI2006]旅行comf
- bzoj1050: [HAOI2006]旅行comf
- bzoj1050: [HAOI2006]旅行comf
- 【bzoj1050】[HAOI2006]旅行comf
- 【bzoj1050】[HAOI2006]旅行comf
- bzoj1050 [HAOI2006]旅行comf
- bzoj1050: [HAOI2006]旅行comf MST
- BZOJ1050 [HAOI2006]旅行comf(Kruskal算法)
- 【bzoj1050】 HAOI2006旅行comf 最小生成树
- BZOJ1050(HAOI2006)[旅行comf]--并查集
- bzoj1050 [HAOI2006]旅行comf(并查集)
- [BZOJ1050][HAOI2006]旅行comf(图论)
- [BZOJ1050][HAOI2006]旅行comf(并查集)
- 【穷举+并查集】BZOJ1050(HAOI2006)[旅行comf]题解
- C#高效绘图(转)
- 八月生活总结
- bzoj1015 [JSOI2008]星球大战starwar
- bzoj1028 [JSOI2007]麻将
- Java集合-HashMap的相关思考
- bzoj1050 [HAOI2006]旅行comf
- cookie的前台、后台存储和取值
- bzoj1912 [Apio2010]patrol 巡逻
- bzoj2154 Crash的数字表格
- bzoj2160 拉拉队排练
- radis在linux中使用实例。
- bzoj2818 Gcd
- bzoj3156 防御准备
- Linux shell计算两个文件的交集,并集和差集