1050: [HAOI2006]旅行comf

题目描述

给你一个无向图,N(N<=500)个顶点, M(M<=5000)条边,每条边有一个权值Vi(Vi<30000)。给你两个顶点S和T,求一条路径,使得路径上最大边和最小边的比值最小。如果S和T之间没有路径,输出”IMPOSSIBLE”,否则输出这个比值,如果需要,表示成一个既约分数。 备注: 两个顶点之间可能有多条路径。

解题思路

非常水的题目,为什么我第一个想到的是O(m2logV)O(m^2logV),就是枚举下界,二分枚举上界,用并查集验证。其实二分枚举完全可是舍去,就是提前把边按权值排序,用并查集不断连边,如果发现s,t在同一个联通块就停止。

#include<cstdio>
#include<algorithm>
using namespace std;
const int maxn=505,maxm=5005;
int n,m,s,t,mx,ansx,ansy,f[maxn];
struct jz{int x,y,z;bool operator<(const jz &b)const{return z<b.z;}
}e[maxm];
int gcd(int x,int y){if (x%y==0) return y;else return gcd(y,x%y);
}
int get(int x){if (f[x]==x) return x;f[x]=get(f[x]);return f[x];
}
int main(){freopen("exam.in","r",stdin);freopen("exam.out","w",stdout);scanf("%d%d",&n,&m);for (int i=1;i<=m;i++){scanf("%d%d%d",&e[i].x,&e[i].y,&e[i].z);mx=max(mx,e[i].z);}scanf("%d%d",&s,&t);ansx=1,ansy=mx;sort(e+1,e+m+1);for (int i=1;i<=m;i++){for (int j=1;j<=n;j++) f[j]=j;int k=m+1;for (int j=i;j<=m;j++){f[get(e[j].x)]=get(e[j].y);if (get(s)==get(t)){k=j;break;}}if (k>m) {if (i==1) {printf("IMPOSSIBLE\n");return 0;}break;}if ((double)e[k].z/e[i].z<(double)ansy/ansx) ansx=e[i].z,ansy=e[k].z;}int k=gcd(ansx,ansy);ansx/=k;ansy/=k;if (ansx==1) printf("%d\n",ansy);else printf("%d/%d\n",ansy,ansx);return 0;
}

[并查集]BZOJ 1050——[HAOI2006]旅行comf相关推荐

  1. BZOJ 1050 [HAOI2006]旅行comf(并查集)

    1050: [HAOI2006]旅行comf Description 给你一个无向图,N(N<=500)个顶点, M(M<=5000)条边,每条边有一个权值Vi(Vi<30000). ...

  2. bzoj 1050: [HAOI2006]旅行comf(尺取+最短路)

    1050: [HAOI2006]旅行comf Time Limit: 10 Sec  Memory Limit: 162 MB Submit: 3335  Solved: 1852 [Submit][ ...

  3. BZOJ 1050 HAOI2006 旅行comf

    1050: [HAOI2006]旅行comf Time Limit: 10 Sec  Memory Limit: 162 MB Submit: 3715  Solved: 2070 [Submit][ ...

  4. bzoj 1050: [HAOI2006]旅行comf(codevs.cn 1001 舒适的路线) 快排+并查集乱搞

    没用的话:好像很久没发博客了,主要是懒太蒟找不到水题.我绝对没弃坑...^_^ 还用些话:本文为博主原创文章,若转载请注明原网址和作者. 进入正题: 先pa网址: bzoj :http://www.l ...

  5. bzoj 1050: [HAOI2006]旅行comf(并查集)

    算法:并查集 难度:NOIP 题解: 将所有边权从小到大排序,正序枚举最小边,在以第i条边为最短边的情况下,枚举j(权值比i大的边),用并查集维护全图的连通性,如果s,t已经连通,并且做到可以更新答案 ...

  6. BZOJ 1050 [HAOI2006]旅行comf(最小生成树)

    题意 第一行包含两个正整数,N和M.下来的M行每行包含三个正整数:x,y和v.表示景点x到景点y之间有一条双向公路 ,车辆必须以速度v在该公路上行驶.最后一行包含两个正整数s,t,表示想知道从景点s到 ...

  7. BZOJ 1050: [HAOI2006]旅行comf

    Time Limit: 10 Sec Memory Limit: 162 MB Submit: 3380 Solved: 1877 Description 给你一个无向图,N(N<=500)个顶 ...

  8. 【BZOJ 1050】旅行comf

    [题目] 题目传送门旅行comf Description 给你一个无向图,( ≤ 500)个顶点, ( ≤ 5000)条边,每条边有一个权值 ( < 30000).给你两个顶点  和 ,求一条路 ...

  9. 1050: [HAOI2006]旅行comf

    Description 给你一个无向图,N(N<=500)个顶点, M(M<=5000)条边,每条边有一个权值Vi(Vi<30000).给你两个顶点S和T,求 一条路径,使得路径上最 ...

最新文章

  1. C#中统计程序运行时间
  2. 日常生活小技巧 -- 惠普 Windows10 进入安全模式
  3. 华字后面配什么字比较好_涟字女孩取名字含义 带涟好名推荐
  4. Python+人工智能的超强组合,再不学就跟不上时代啦!
  5. spark中local模式与cluster模式使用场景_Spark内核及通信框架概述-针对面试(后面有源码分析)...
  6. java集合框架介绍_Java集合框架全面介绍(一)
  7. 如何使用 python 爬取全国小区名称
  8. c# 中崎_C# 打开钱箱支持北洋、佳博、爱普生
  9. 路径规划-人工势场法(Artificial Potential Field)
  10. android 8187驱动 win7,8187无线网卡驱动,教您Realtek瑞昱8187无线网卡驱动
  11. matlab所有颜色,MATLAB 颜色选择及应用
  12. qq邮箱的er图_QQ邮箱正确格式
  13. DAMA数据管理知识体系指南之数据安全管理
  14. Pandas中DataFrame基本函数整理(全)
  15. 昨天你用的 YYYY-MM-dd 被同事锤了吗?
  16. 北京某电信运营商数据中心暖通节能技术和应用
  17. 基于struts2的留言板系统简单实现jdbc分页
  18. C语言中关于除法和取余的理解
  19. Mysql基础之natural 自然连接
  20. DaVinci DM6437 中文教程

热门文章

  1. 苹果系统 如何快速访问服务器,mac下的finder怎么使用技巧 苹果系统如何快速打开Finder...
  2. web 框架的本质及自定义web框架 模板渲染jinja2 mvc 和 mtv框架 Django框架的下载安装 基于Django实现的一个简单示例...
  3. 初学者基于paddle的计算机视觉快速上手项目
  4. poj2249Binomial Showdown
  5. python educoder苹果梨子_pythoneducoder苹果梨子煮水的功效_苹果梨子汤的功效
  6. 友盟用户反馈自定义UI-Android
  7. c语言做相册影集,制作DIY相册影集教程-如何制作影集
  8. php guzzlehttp,PHP 使用 Guzzle 发送 HTTP 请求
  9. ImproperlyConfigured: mysqlclient 1.4.0 or newer is required; you have 0.10.1.
  10. Cesium.js解析第一篇 Cartesian3