算法: 求出MST之后枚举每条在MST之外的边 连上之后会出现环 找到环中除加上的边之外权值最大的边 删除该边之后得到一颗新树 做法: 利用LCA倍增地维护最小生成树上两点之间的最大边权 每次枚举在MST之外的边 有两种情况 ①.两个端点在一条链上 ②.两个端点不在一条链上 第一种情况就直接得到答案 ...
分类:
其他好文 时间:
2018-07-14 20:01:24
阅读次数:
185
#include #include #include #define maxn 105 #define INF 0x3f3f3f3f using namespace std; int head[maxn],maxcost[maxn][maxn],map[maxn][maxn]; bool used[... ...
分类:
其他好文 时间:
2018-07-08 18:03:44
阅读次数:
153
Given a connected undirected graph, tell if its minimum spanning tree is unique. Definition 1 (Spanning Tree): Consider a connected, undirected graph ...
分类:
其他好文 时间:
2018-07-08 16:40:47
阅读次数:
184
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1977 kruscal别忘了先按边权sort。自己觉得那部分处理得还挺好的。(联想到之前某题的经验) 没管重边。好像还行? ...
分类:
其他好文 时间:
2018-07-07 01:12:21
阅读次数:
184
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1977 因为严格,所以要记录到 LCA 的一个次小值; 很快写好,然后改掉一堆错误后终于过了样例!然而交上去1WA; 又改了半天,还是WA,于是放弃,抄题解好久... 然而就在我调了一个小时终于 ...
分类:
其他好文 时间:
2018-07-07 00:30:49
阅读次数:
214
[BeiJing2010组队]次小生成树 Tree Time Limit: 10 Sec Memory Limit: 512 MB Description 小 C 最近学了很多最小生成树的算法,Prim 算法、Kurskal 算法、消圈算法等等。 正当小 C 洋洋得意之时,小 P 又来泼小 C 冷水 ...
分类:
其他好文 时间:
2018-06-22 23:55:22
阅读次数:
210
POJ1679 首先求出最小生成树,记录权值之和为MinST。然后枚举添加边(u,v),加上后必形成一个环,找到环上非(u,v)边的权值最大的边,把它删除,计算当前生成树的权值之和,取所有枚举加边后生成树权值之和的最小值 思路: 最小生成树唯一性判断,求次小生成树的val再与最小生成树比较。1.先用 ...
分类:
其他好文 时间:
2018-06-15 21:40:00
阅读次数:
164
原博客出处:https://blog.csdn.net/yasola/article/details/74276255 通常次小生成树是使用Prim算法进行实现的,因为可以在Prim算法松弛的同时求得最小生成树上任意两点之间的最长边。但是利用Kruskal算法却没办法在松弛的同时求得。 所以我们就要 ...
分类:
其他好文 时间:
2018-06-08 14:35:14
阅读次数:
222
传送门 分析: 次小生成树的求法有两种,最大众的一种是通过倍增LCA找环中最大边求解,而这里我介绍一种神奇的O(nlogn) 做法: 我们先建立最小生成树,因为我们用kruskal求解是边的大小已经按升序排列,所以相同情况下,先枚举的边一定更优,所以我们每一次暴力的找非树边所连两点的LCA,并在寻找 ...
分类:
其他好文 时间:
2018-05-09 20:49:43
阅读次数:
163
严格次小生成树模板 算法流程: 先用克鲁斯卡尔求最小生成树,然后给这个最小生成树树剖一下,维护边权转点权,维护最大值和严格次大值。 然后枚举没有被选入最小生成树的边,在最小生成树上查一下这条边的两端点的路径上的最长边,如果最长边等于枚举到的边的边权,那么选次长边(没有次长边的话直接跳过),然后在最小 ...
分类:
其他好文 时间:
2018-04-29 22:15:13
阅读次数:
228