梦后楼台高锁,酒醒帘幕低垂

Time Limit: 3000/1000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others)

Submit  Status
给你一个有n个点和m条边的无向连通图,每条边都有一个权值w.
我们定义,对于一条路径,它的Charm value为该路径上所有边的权值的最大值与最小值的差.
询问从1到n的所有路径的Charm value的最小值.

Input

第一行有两个整数n,m(1≤n≤200,n−1≤m≤1000),表示该图有n个点和m条边.
接下来m行,每行三个整数u,v,w(1≤u,v≤n,1≤w≤1000000),表示点u和点v之间有一条权值为w的边.

Output

输出一个数,即从1到n的所有路径的Charm value的最小值.

Sample input and output

Sample Input Sample Output
4 4
3 4 1
2 3 2
1 2 4
2 4 3

1

Source

2017 UESTC Training for Graph Theory

UESTC 1636 梦后楼台高锁,酒醒帘幕低垂

My Solution

题意:给出一个有n个点和m条边的无向连通图,每条边都有一个权值w.
定义,对于一条路径,它的Charm value为该路径上所有边的权值的最大值与最小值的差.
询问从1到n的所有路径的Charm value的最小值.

最小生成树Kruskal算法的扩展
首先把边按照边权排序,然后对于每个i,向后枚举,并把边加入连通块,当1和n属于同一个连通块时刷新
ans,并接着枚举下一个i。
时间复杂度 O(mlogm)
空间复杂度 O(m)

#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;
typedef long long LL;
const int MAXN = 2e2 + 8;struct edge{int u, v, w;edge(int u = 0, int v = 0, int w = 0) : u(u), v(v), w(w) {}
}e[5*MAXN];
inline bool cmp(const edge &a, const edge &b){return a.w < b.w;
}int fa[MAXN], _rank[MAXN];
inline void init(int n){for(int i = 0; i <= n; i++){fa[i] = i;_rank[i] = 0;}
}
inline int _find(int u){return fa[u] = fa[u] == u ? u : _find(fa[u]);
}
inline void _merge(int u, int v){int x = _find(u), y = _find(v);if(x == y) return;if(_rank[x] < _rank[y]){fa[x] = y;}else{fa[y] = x;if(_rank[x] == _rank[y]) _rank[x]++;}
}int main()
{#ifdef LOCALfreopen("a.txt", "r", stdin);//freopen("a.out", "w", stdout);int T = 1;while(T--){#endif // LOCAL//ios::sync_with_stdio(false); cin.tie(0);int n, m, i, j, u, v, w, ans = 1e9 + 8;//cin >> n;scanf("%d%d", &n, &m);for(i = 0; i < m; i++){scanf("%d%d%d", &e[i].u, &e[i].v, &e[i].w);}sort(e, e + m, cmp);for(i = 0; i < m; i++){init(n);for(j = i; j < m; j++){_merge(e[j].u, e[j].v);if(_find(1) == _find(n)){ans = min(ans, e[j].w - e[i].w);break;}}}printf("%d\n", ans);#ifdef LOCALcout << endl;}#endif // LOCALreturn 0;
}

Thank you!

------from ProLights

UESTC 1636 梦后楼台高锁,酒醒帘幕低垂 最小生成树Kruskal算法的扩展相关推荐

  1. 【最小生成树专题】UESTC - 1636 梦后楼台高锁,酒醒帘幕低垂

    http://qscoj.cn/#/problem/show/1636 梦后楼台高锁,酒醒帘幕低垂 Description 给你一个有nn个点和mm条边的无向连通图,每条边都有一个权值ww.  我们定 ...

  2. UESTC - 1636 梦后楼台高锁,酒醒帘幕低垂(枚举+最小生成树)

    题意 给你一张图, 求1到n的路径,边权最大值-边权最小值最小的差ans 输出这个ans 思路来源 https://blog.csdn.net/ProLightsfxjh/article/detail ...

  3. UESTC 1636 梦后楼台高锁,酒醒帘幕低垂

    题意:求一条路径,使得这条边连接1到n,求边权值的最大值与最小值的差 题解:最小生成树,对边权排序,可以枚举边的最大和最小的值,判断能否使得1和n连通 #include <bits/stdc++ ...

  4. HDOJ 1863畅通工程(最小生成树kruskal算法并查集实现)

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=1863 最小生成树kruskal算法:http://www.zhuoda.org/irini/78592.h ...

  5. 图的最小生成树-Kruskal算法

    问题引入 [问题描述] 编写程序,利用带权无向图的邻接矩阵存储,实现图的最小生成树Kruskal算法. [输入形式] 输入图的顶点序列及图的边的情况.如样例所示.边的输入以输入-1,-1,-1作为结束 ...

  6. 最小生成树kruskal算法

    最小生成树kruskal算法 概述 算法分析 代码 概述 克鲁斯卡尔(Kruskal)(Kruskal)(Kruskal)算法是求连通网的最小生成树的另一种方法.与普里姆(Prim)(Prim)(Pr ...

  7. 实现最小生成树Kruskal算法(附完整代码)

    实现最小生成树Kruskal算法(附完整代码) Kruskal算法是一种常见的计算最小生成树的算法.它的主要思想是将所有的边按照权值从小到大进行排序,并逐个加入到生成树中,如果加入后不会形成环,则保留 ...

  8. CDOJ 1636 梦后楼台高锁,酒醒帘幕低垂

    给你一个有n个点和m条边的无向连通图,每条边都有一个权值w. 我们定义,对于一条路径,它的Charm value为该路径上所有边的权值的最大值与最小值的差. 询问从1到n的所有路径的Charm val ...

  9. CDOJ:1636-梦后楼台高锁,酒醒帘幕低垂(Kruskal+暴力)

    梦后楼台高锁,酒醒帘幕低垂 Time Limit: 3000/1000MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others) Submit ...

  10. 最小生成树kruskal算法并查集版 C语言实现

    今天数据结构课讲了最小生成树的Kruskal算法和Prim算法,不过都只是概念,可能是怕他们听不懂吧,反正算法实现一概不讲...囧 下午抱着<算法导论>跑去图书馆看Kruskal算法,发现 ...

最新文章

  1. ​2018你不得不看的国内CRM软件排行榜
  2. mysql换数据存储路径,mysql查看和修改数据存储路径并转移数据
  3. JavaScript 实现块级作用域
  4. System.Xml名称空间下的支持DOM的类型
  5. 最实用的机器学习算法Top5
  6. 多元线性回归模型-数学建模类-matlab详解
  7. 用几何语言表示线段ab的中点c,做完这30道精选题,你的几何图形绝对满分!
  8. Spring容器创建流程(5)bean后置处理之注册
  9. linux下-bash: ls: command not found
  10. keil p0 0c语言不了,Keil C51对C语言的关键词扩展之十三: sfr
  11. 悟透delphi 第十章 操作界面与操作逻辑
  12. 华为网赛存储基础原理自测答案
  13. 暴风影音3 Build version : 3.7.11.13 漏洞
  14. java j2se下载_安装JDK(J2SE)
  15. Matlab Coder杂记
  16. python实验报告代写_vector data作业代写、python程序设计作业调试、代做python实验作业、代写OGR python作业代做Python程序|代写Web开发...
  17. 央行企业征信异议、声明业务办理流程?
  18. 小米路由器AX9000刷写OpenWrt官网发布的固件
  19. 速学大学计算机基本内容(一)有图
  20. 视频处理指定颜色的提取

热门文章

  1. python+vue+django高校教职工人事档案管理系统
  2. allergo 命令
  3. 软件测试的需求人才越来越多,为什么大家还是不太愿意走软件测试的道路?
  4. ORA-01045: user lacks CREATE SESSION privilege; logon denied
  5. Inno Setup 为程序创建桌面快捷方式
  6. escharts 柱状图 百分比_Echarts柱状图百分比显示
  7. 球面投影全景图快速拼接
  8. 计算机桌面文件删除不掉是怎么了,如何解决电脑桌面文件无法删除问题
  9. 拉普拉斯变换和Z变换
  10. Opencv基础--threshold