uva 544(kruskal 变形)
题意:在一张无向带权图中,求a-b的一条路经满足这条路径上的最小的边最大。
思路:仔细一看就能发现这不是最小瓶颈路的变形嘛,最小瓶颈路是让你求最大的边最小,这道题的意思就是反了一下,而且还是单组询问的。所以我们用kruskal先求最大生成树,然后第一次合并询问节点的边即为答案。
代码如下:
1 /************************************************** 2 * Author : xiaohao Z 3 * Blog : http://www.cnblogs.com/shu-xiaohao/ 4 * Last modified : 2014-02-05 17:03 5 * Filename : uva_544.cpp 6 * Description : 7 * ************************************************/ 8 9 #include <iostream> 10 #include <cstdio> 11 #include <cstring> 12 #include <cstdlib> 13 #include <cmath> 14 #include <algorithm> 15 #include <queue> 16 #include <stack> 17 #include <vector> 18 #include <set> 19 #include <map> 20 #define MP(a, b) make_pair(a, b) 21 #define PB(a) push_back(a) 22 23 using namespace std; 24 typedef long long ll; 25 typedef pair<int, int> pii; 26 typedef pair<unsigned int,unsigned int> puu; 27 typedef pair<int, double> pid; 28 typedef pair<ll, int> pli; 29 typedef pair<int, ll> pil; 30 31 const int INF = 0x3f3f3f3f; 32 const double eps = 1E-6; 33 const int LEN = 1010; 34 int n, m, parent[LEN], st, ed; 35 map<string, int> mp; 36 struct edge{int fr, to, val;}e[LEN*LEN]; 37 38 void init(){ 39 mp.clear(); 40 for(int i=0; i<LEN; i++) parent[i] = i; 41 } 42 int Find(int x){return parent[x]==x?x:parent[x] = Find(parent[x]);} 43 bool cmp(edge a, edge b){ return a.val > b.val;} 44 45 int kruskal() 46 { 47 sort(e, e+m, cmp); 48 for(int i=0; i<m; i++){ 49 int pa = Find(e[i].fr), pb = Find(e[i].to); 50 if(pa == pb) continue; 51 parent[pa] = pb; 52 if(Find(st) == Find(ed)) return e[i].val; 53 } 54 } 55 56 int main() 57 { 58 //freopen("in.txt", "r", stdin); 59 60 char a[101], b[101], val; 61 int ia, ib, kase = 1; 62 while(scanf("%d%d", &n, &m)!=EOF){ 63 init(); 64 if(!n && !m) break; 65 int cnt = 0; 66 for(int i=0; i<m; i++){ 67 scanf("%s%s%d", a, b, &e[i].val); 68 if(!mp.count(a))mp[a] = ia = cnt++; 69 else ia = mp[a]; 70 if(!mp.count(b))mp[b] = ib = cnt++; 71 else ib = mp[b]; 72 e[i].fr = ia, e[i].to = ib; 73 } 74 scanf("%s%s", a, b); 75 st = mp[a]; ed = mp[b]; 76 int ans = kruskal(); 77 printf("Scenario #%d\n", kase++); 78 printf("%d tons\n\n", ans); 79 } 80 return 0; 81 }
View Code
转载于:https://www.cnblogs.com/shu-xiaohao/p/3538360.html
uva 544(kruskal 变形)相关推荐
- 【数据结构】 最小生成树(四)——利用kruskal算法搞定例题×3+变形+一道大水题...
在这一专辑(最小生成树)中的上一期讲到了prim算法,但是prim算法比较难懂,为了避免看不懂,就先用kruskal算法写题吧,下面将会将三道例题,加一道变形,以及一道大水题,水到不用高级数据结构,建 ...
- uva 10034 Freckles (kruskal||prim)
题目上仅仅给的坐标,没有给出来边的长度,不管是prim算法还是kruskal算法我们都须要知道边的长度来操作. 这道题是浮点数,也没啥大的差别,处理一下就能够了. 有关这两个算法的介绍前面我已经写过了 ...
- P1967,ssl2267-货车运输【树上倍增LCA,最小生成树变形kruskal】
正题 题目链接: https://www.luogu.org/problemnew/show/P1967 大意 一个无向图,每个边有个权值,若干个询问,求两个点之间的一条最短路是这条最短路上的最小权值 ...
- UVa 1394 约瑟夫问题的变形
https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...
- 【Kruskal】Uva 1395 Slim Span
这段时间要沉迷刷题一段时间了,就让CSDN陪我一起吧! 一.题目大意 题目的大致意思就是要你求一个图的生成树,要保证求解的这棵生成树的边的权值,最大值减去最小值最小,要求输出这个最小值. 二.题目思路 ...
- UVA 1471 Defense Lines (LIS变形)
题意:删除原序列中的一段连续子序列,使得剩下的序列中存在一段最长连续子序列. 题解:LIS变形 我们用l[i]l[i]l[i]和r[i]r[i]r[i]记录往右以iii结尾和往左以iii开头的最长连续 ...
- UVA 10074 Take the Land(最大子矩阵和变形)
题目大意:输入矩阵,找出元素全为0的子矩阵的元素最大和. 解题策略:将0,1转换,动态规划中判断最长子区间和与当前列的大小的关系. /*UVA 10074 Take the LandAC by J.D ...
- Uva 10048 - Audiophobia (Floyd变形)
题目链接 https://vjudge.net/problem/UVA-10048 [题意] 输入一个C个点,S个边(C<=100,S<=1000)的无向图,边权表示该路径上的噪声值,当你 ...
- UVA 1471 Defense Lines 防线 (LIS变形)
给一个长度为n的序列,要求删除一个连续子序列,使剩下的序列有一个长度最大的连续递增子序列. 最简单的想法是枚举起点j和终点i,然后数一数,分别向前或向后能延伸的最长长度,记为g(i)和f(i).可以先 ...
最新文章
- 《C++面向对象高效编程(第2版)》——2.20 什么是多线程安全类
- 用python写脚本看什么书-终于知晓python编写脚本入门教程
- xml操作之创建xml节点
- Hystrix 熔断器03 —— hystrix 案例之高并发测试案例的解决方案
- win8 Windows 8 设置 默认浏览器
- 很好的 .NET 换肤软件 IrisSkin
- go语言一个包含nil指针的接口不是nil接口的理解
- Spring 基础 用mock对Controller执行测试(系列号4)
- AngularJS 后台交互
- 研究员使用新型CPU攻击技术 “SmashEx” 攻破 Intel SGX
- vim设置tab宽度为4_vim编辑器VimScript插件开发系列一「定制Vim 3」
- 简单几步把Spring Boot 项目部署到 K8S,步骤来了!
- 就问你慌不慌:每天都有 一百万 程序员在投简历
- python网络编程百度云_python网络编程.mobi
- 前端-js网页特效(三)动画效果及原理
- Python爬虫 Selenium实现自动登录163邮箱和Locating Elements介绍
- python数据类型小结
- 弹性盒子(弹性布局)
- python 有损和无损 方式替换表情符号
- POW证明代码实现demo[区块链]
热门文章
- (0030) iOS 开发之跳转之转场动画
- mysql slave 详细配置_进击的MysqlSlave环境搭建及配置
- 7.20套娃(tao)
- (14)Why some people find exercise harder than others
- weblogic在linux服务器上部署应用
- node.js学习随笔
- android源码framework下添加新资源的方法
- 未能创建Microsoft Visual C# 2008 编译器 解决方案【轉】
- C# MainWindowHandle为0的解决方法
- 使用mock解决测试中依赖第三方接口的问题