生成树相关
Anxdada
多读书多看报, 少吃零食多睡觉
展开
-
POJ --- 1679 【判断最小生成树是否唯一】
网上两种算法对应都有: 题目链接prim算法判最小生成树是否唯一下面是这道题的AC代码:#include<cstdio>#include<cmath>#include<algorithm>#include<iostream>#include<cstring>#define CLR(x) memset(x,0,sizeof(x))using namespace std;const in原创 2017-06-21 11:44:31 · 445 阅读 · 0 评论 -
UVALive - 5713 Qin Shi Huang's Naitonal Road System 【思维 and 次小生成树】
传送门 题意: 二维平面上有n个点, 每个点有一个人口数. 现在我们想让所有n个点联通,并且我们可以免费修一条路,即我们要让A/B最大, 其中A是免费修的那条路的端点的人口数和,而B是剩下联通的路的总和。思路: n只有1000,所以我们可以暴力枚举加那条边,然后减去枚举那条边的端点之间最大的边, 因为我们要B最小, 即剩下的总和最小, 那么肯定是找最小生成树有最优的, 然后又要删去树上端点任...原创 2018-05-23 15:51:01 · 186 阅读 · 0 评论 -
Uva - 11354 Bond 【多次询问最小瓶颈路 and LCA预处理】
传送门 题意: 跟定一副加权无向图, q次询问, 每次询问两个点之间的路径中最大边的最小是多少. 思路: 很明显, 这个是求最小瓶颈路, 只不过是多次询问, 那么我们可以知道答案一定实在MST上, 所以先求MST, 然后用LCA预处理这颗树, 就可以做到logn的回答了.复杂度: O(mlogm + nlogn + qlogn) AC Codeconst int maxn =...原创 2018-05-23 15:26:48 · 248 阅读 · 0 评论 -
最小瓶颈路 和 次小生成树
简介最小生成树是图论里面一类经典问题,可以有很多种变形,其中最小瓶颈路和次小生成树就是两种比较经典的变形。最小瓶颈路就是在两个结点之间求一条最长边最短的路径,而次小生成树则是所有生成树中权值排名第二的生成树(可以和最小生成树相等)(当然也有一个问题是求严格的次小生成树, 那么这个有不同了, 详情看这类的上一篇博客)最小瓶颈路:给定一个加权无向图,并给定无向图中两个结点u和v,求u到...原创 2018-05-23 14:58:24 · 605 阅读 · 0 评论 -
洛谷P4180 严格次小生成树 BZOJ1977 【Kruskal and LCA倍增】
传送门 // 问题很简单, 就是求次小生成树, 并且权值是严格小于, 不是之前的小于等于乐. 这道题写了我一下午….. 我好菜啊~ , 原先维护的树上任意两点之间的最大值, 然后依次去找这个环中的最大以及次大值, 老是要错…. 死活过不了第一个case, 想死的心都有了…… 然后就改成了同时维护树上的严格次小值. 直接算所有的最小增量, 才过的… 之前找bug找了我三个小时, 还是放弃了…...原创 2018-05-21 17:24:27 · 369 阅读 · 1 评论 -
POJ 3026 Borg Maze 【思维 + bfs + MST】
传送门 // 题意: 这个题意确实有点难懂, 就是起始点是S, A是外星人, 然后问从S出发把所有A吃完至少需要多长时间, 规则是从起始点就可以分成很多份(任意份), 但是总的步数是所有份一起走的步数, 然后吃了一个A后又可以分成很多份. 所以第一个样例是起始点就分两份走, 样例二是起始分成2分, 然后再吃完(2, 3), (6, 3) 后又分两份即可.思路: 所以我们可以发现任意一点A是可以由A原创 2018-03-02 18:35:58 · 205 阅读 · 0 评论 -
UVALive 6437 Power Plant 【最小生成树 + 思维】
传送门 // 题意: 给定一幅带权图(n, m), 然后给定k个点, 每个点都要至少要和这k个点的一个点直接或间接相连, 问最少的花费是多少.(即不要的边我们直接删去, 只留我们要的那些边, 然后累加起来要最小.)// 思路: 我们将那k个点就行缩点处理, 即把这k个点缩成一个点的编号, 然后存下来跑一遍最小生成树就行啦!!! 想到了很简单, 因为缩完点后就是一幅图, 然后我们求最小生成树就行了,原创 2018-01-13 19:26:08 · 520 阅读 · 0 评论 -
最小生成树的两种最基本的算法
最小生成树的两种最基本的算法prim#include<cstdio>#include<cstring>#include<iostream>using namespace std;const int maxn=2005;const int inf=1e9+5;int edge[maxn][maxn];int near[maxn];int low[maxn];int p,l,n;vo原创 2017-06-20 22:58:45 · 849 阅读 · 0 评论 -
UVA --- 10462 【次小生成树】
题意就是判断是否存在最小生成树,如果存在,那又是否有次小生成树,有的话输出其值,否则按题意输出. AC代码: (第一次过的时候时间达到了710ms,我嫌太长了,看那些都是10ms过的,于是不断的改,终于还是10ms也过了,哈哈,vector真的很好用!!!)#include<cstdio>#include<cmath>#include<algorithm>#include<iostream>原创 2017-06-21 11:45:14 · 373 阅读 · 0 评论 -
HDU 4126 and HDU 4756 【求最小生成树的最佳替换边】经典题
HDU - 4126 和 HDU - 4756 基本是一样的题, 前面是后面那道的简化版这两道题主要涉及的一个问题就是, 每次替换掉图中的一条边, 问此时图的最小生成树是多少.. 很明显有个暴力的方法, 但是这样时间爆炸, 我们可以这样想, 先求一次图的最小生成树, 如果替换的边不是树边, 那么此时的图的MST依旧不会变, 如果是树边, 很明显, 我们需要在原图中找一条不是树边, 并且尽量...原创 2018-07-17 18:10:15 · 526 阅读 · 0 评论