了解次小生成树之前先看一下关于生成树的相关定义 取自《算法竞赛训练指南》 1-最小瓶颈生成树 给出加权无向图,是的生成树最长边最小 //这个过程不就是kruskal算法 2-最小瓶颈路 给定两个节点u,v,求u,v之间的最短一条路径,如图,红色路线的最小瓶颈路为 2-4, 绿色路线为2--3 4次小 ...
分类:
其他好文 时间:
2019-08-09 23:58:02
阅读次数:
180
先求出最小生成树,然后维护f1/f2[i][j]表示i到$2^{j}-1$祖先中最大和严格次大边,枚举生成树外的每一条边并查询这条边两点间的最大边和严格次大边,若最大边<插入边,就用插入边替换最大边计算答案,否则用插入边替换次大边计算答案 1 #include<bits/stdc++.h> 2 us ...
分类:
其他好文 时间:
2019-08-09 21:31:37
阅读次数:
77
思路: 首先要想清楚一个问题,对于次小生成树,肯定是在最小生成树上断掉一条边,然后在非最小生成树边中加一条边进去产生的(~~具体窝也不会证鸭~~;知道了这个~~非常显然~~的结论后具体思路就好想了. 做法: 我们考虑暴力删边和加边.对于每条未在最小生成树中的边,考虑删掉最小生成树中的一条边(边权尽可 ...
分类:
其他好文 时间:
2019-08-08 21:19:58
阅读次数:
101
次小生成树,就是求除了最小生成树之外最小的那个生成树。 下面介绍一下利用prim求次小生成树的主要步骤。 1.先求出来最小生成树。并将最小生成树任意两点之间路径当中的权值最大的那一条找出来,为什么要找最大的呢,因为生成树加入一条边之后一定构成了回路,那么肯定要去掉这个回路当中一条边才是生成树,那么, ...
分类:
其他好文 时间:
2019-07-17 09:26:00
阅读次数:
109
http://poj.org/problem?id=1679 #include<iostream> #include<vector> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; struct ...
分类:
其他好文 时间:
2019-07-07 11:02:20
阅读次数:
111
Qin Shi Huang's National Road System Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 10874 Accept ...
分类:
其他好文 时间:
2019-05-09 18:22:12
阅读次数:
92
"题目链接$Click$ $Here$" 。 题意就是要求一个图的严格次小生成树。以前被题面吓到了没敢做,写了一下发现并不难。 既然要考虑次小我们就先考虑最小。可以感性理解到一定有一种次小生成树,可以由最小生成树删一条边再加一条边得到。我们枚举加上去的这一条边,加上去以后原$mst$会成为一个基环树 ...
分类:
其他好文 时间:
2019-04-27 21:30:52
阅读次数:
213
之前写的一道题,突然看到就来发一篇博客。 大致思路就是首先找到最小生成树,再枚举每一条不在这个树里的边,加上后肯定就形成一个环,我们就要在这个环上断一条边。 新加的边 >= 这条路径上最大值。(反证法) 如果新加的边 > 这条路径上最大值,则ans - 最大值 + 新的权值,否则 - 次大值 + 新 ...
分类:
其他好文 时间:
2019-04-10 23:43:36
阅读次数:
208
#include #include #include #include #include #define Maxn 300010 #define maxn 300005 using namespace std; #define ll long long struct edge{ int to,w,n... ...
分类:
其他好文 时间:
2019-03-12 09:17:29
阅读次数:
200
Is There A Second Way Left? Description: Nasa, being the most talented programmer of his time, can’t think things to be so simple. Recently all his ne ...
分类:
其他好文 时间:
2019-02-14 00:15:02
阅读次数:
147