由于此题边数比较小,所以可以先给边排个序,然后跑m遍最小生成树,每跑一次删除一条边,找最优解。

  • 防TLE技巧

把边按从小到大的顺序排好,那么只要当前无法联通,那么后面也无法联通

  • 最优解找法
double tmp=(1.0*e[i].w)/(1.0*e[j].w);
//因为边是有序的,所以当前的第一条边是最大的,保证能联通的最后一条边就是最小的(详细的自己理解)
if(tmp<ans) a=e[i].w,b=e[j].w,ans=tmp;
//与当前的最优解进行比较
  • 分数的处理技巧

设a和b是最后的结果,那么当b能整除a时,直接输出商

否则就求一遍最大公约数,把a与b分别除以这个最大公约数,输出结果

代码

#include<bits/stdc++.h>
using namespace std;
const int MAXN=500+10;
const int MAXM=5000+10;
int n,m,s,t;
struct Node
{
int u,v,w;
}edge[MAXM];
int f[MAXN];
int ans1,ans2;
inline int find(int k)
{
if(f[k]==k)return k;
else return f[k]=find(f[k]);
}
inline bool cmp(Node u,Node v)
{
return u.w<v.w;
}
inline void init()//每次的并查集初始化
{
for(int i=1;i<=n;i++)f[i]=i;
}
inline int read()
{
int tot=0,f=1;
char c=getchar();
while(c<'0'||c>'9')
{
if(c=='-')f=-1;
c=getchar();
}
while(c>='0'&&c<='9')
{
tot=tot*10+c-'0';
c=getchar();
}
return tot*f;
}
inline int gcd(int x,int y)//求最大公约数
{
if(y>x)return gcd(y,x);
if(y==0)return x;
return gcd(y,x%y);
}
int main()
{
n=read();m=read();
for(int i=1;i<=m;i++)
{
edge[i].u=read();
edge[i].v=read();
edge[i].w=read();
}
s=read();t=read();
sort(edge+1,edge+1+m,cmp);
int now;
for(int i=1;i<=m;i++)
{
init();
/*for(int i=1;i<=n;i++)cout<<f[i]<<" ";
cout<<endl;*/
for(now=i;now<=m;now++)
{
int fx=find(edge[now].u),fy=find(edge[now].v);
//cout<<fx<<" "<<fy<<endl;
if(fx==fy)continue;
f[fx]=fy;
if(find(s)==find(t))break;
}
/*for(int i=1;i<=n;i++)cout<<f[i]<<" ";
cout<<endl;*/
if(i==1&&find(s)!=find(t))
{
cout<<"IMPOSSIBLE\n";
return 0;
}
if(find(s)!=find(t))break;
if(ans1*edge[i].w>=ans2*edge[now].w)ans1=edge[now].w,ans2=edge[i].w;
}
//cout<<ans1<<" "<<ans2<<endl;
if(ans2%ans1==0)
{
cout<<ans2/ans1<<endl;
return 0;
}
int gcdd=gcd(ans1,ans2);
cout<<ans1/gcdd<<"/"<<ans2/gcdd<<endl;
return 0;
}

最新文章

  1. ASP.NET MVC 5– 使用Wijmo MVC 5模板1分钟创建应用
  2. Linux IPC udp/tcp/UNIX域 socket编程
  3. connect mysql
  4. Angular工作笔记
  5. Tomcat 发布war包提示war包超出大小修改
  6. HTML中的IE条件注释
  7. 解决VTune错误.../lib64/libstdc++.so.6: version `GLIBCXX_3.4.14&amp;#39; not found (required by ...)
  8. Windows应用程序要点
  9. WINFORM数据库操作,有点像安装里面的SQLITE
  10. [SharePoint Online]SharePoint Designer无法打开世纪互联版sp online站点得解决方法,报错信息:请安装更新后再重新打开
  11. 【Android 应用开发】Android - TabHost 选项卡功能用法详解
  12. cvc-elt.1: Cannot find the declaration of element &#39;beans&#39;Failed to read schema document &#39;http://www.springframework.org/schema/beans/spring- beans-3.0.xsd&#39;
  13. ketlle windows下的安装(最基本)
  14. SQL Server进阶(十一)可编程对象——变量、 批、流元素、 游标
  15. 浏览器 User-Agent 大全
  16. Tomcat 加载 jsp 异常:ServletException: java.lang.LinkageError
  17. Pycharm2017常用快捷键
  18. Jenkins部署Python项目实战
  19. maven加载第三方jar不能加载
  20. day32 信号量 事件 管道 进程池

热门文章

  1. HDU 6134 Battlestation Operational | 2017 Multi-University Training Contest 8
  2. Appium自动化测试教程-自学网-Package与Activity
  3. BZOJ 2169 连边 DP
  4. 数据结构实验之二叉树七:叶子问题(SDUT 3346)
  5. c 判断是否为 字母或数字(iswalnum example)
  6. 十一、FHS基础原理
  7. 表单 Flask-WTF - 校验器
  8. ReactiveCocoa实践
  9. QT 自定义消息
  10. ArcGIS超级工具SPTOOLS-编号工具