给定一个带权的无向连通图,怎样选取一棵生成树,使树上全部边上权的总和为最小,这叫最小生成树.求最小生成树的算法(1)克鲁斯卡尔算法图的存贮结构採用边集数组,且权值相等的边在数组中排列次序能够是随意的.该方法对于边相对照较多的不是非常有用,浪费时间.(2)普里姆算法图的存贮结构採用邻接矩阵.此方法是按...
分类:
其他好文 时间:
2014-07-10 10:48:27
阅读次数:
233
问题:POJ2485本题求解生成树最大边的最小值分析:首先证明生成树最大边的最小值即最小生成树的最大边。假设:生成树最大边的最小值比最小生成树的最大边更小。不妨设C为G的一个最小生成树,e是其中的最大边。把e从C中去除,则C被分成C1,C2两个连通子集。假设存在最大边小于e的生成树CC,则CC中连接...
分类:
其他好文 时间:
2014-07-07 10:13:20
阅读次数:
237
问题: POJ3026分析:采用BFS算出两两之间的距离,再用PRIM算法计算最小生成树。AC代码: 1 //Memory: 220K Time: 32MS 2 #include 3 #include 4 #include 5 #include 6 #include...
分类:
其他好文 时间:
2014-07-03 23:17:55
阅读次数:
362
hdu1301&poj1251 Jungle Roads(最小生成树之prim算法)...
分类:
其他好文 时间:
2014-07-03 17:21:17
阅读次数:
155
多种方法,可以理解为最短路变形。
也可以当作最小生成树。
题意理解就很简单。
青蛙A到青蛙B之间距离中某一次跳的距离,选出最大的。
写了2个最短路的。SPFA 和 Dijkstra。
顺便熟悉一下最小生成树,也写个Kruskal 的。
SPFA:
#include
#include
#include
#include
#include
#include
#...
分类:
其他好文 时间:
2014-07-03 13:52:06
阅读次数:
146
Prim算法:
假设N = (V,{E})是连通网,TE是N上最小生成树中边的集合。算法从U={u0}(u0属于V),TE={}开始,重复执行下述操作:在所有u属于U,v属于V-U的边(u,v)属于E中找到一条代价最小的边(u0,v0)并入集合TE,同时v0并入U,直至U=V为止,此时TE中必有n-1条边,则T=(V,{TE})为N的最小生成树.
为实现这个算法,需附设一个辅助数组cl...
分类:
其他好文 时间:
2014-07-01 15:44:15
阅读次数:
254
搭建一个最小代价的网络,最原始的最小生成树的应用。
这里使用Union find和Kruskal算法求解.
注意:
1 给出的数据是原始的矩阵图,但是需要转化为边表示的图,方便运用Kruskal,因为需要sort
2 减少边,一个矩阵最多需要(N*N-N)>>1条边,有人讨论本题是否有向,那是无意义的,因为本题的最小生成树和方向无关。
3 使用Union find是为了判断是否有环,比原...
分类:
Web程序 时间:
2014-06-30 08:10:08
阅读次数:
200
本题也是使用Prime和Kruskal都可以的最小生成树的题解。
本题一点新意就是:需要除去最大的S-1个距离,因为可以使用卫星覆盖这些距离。
技巧:建图建有向图,速度快点,不用计算两边。
这里使用Prime,因为是稠密图。
#include
#include
#include
#include
#include
#include
using std::sort;
c...
分类:
Web程序 时间:
2014-06-30 00:16:45
阅读次数:
292
题目:
输入顶点数目,边的数目,输入每条边的两个顶点编号还有每条边的权值,求最小生成树,输出最小生成树的权值。。
注意:prim算法适合稠密图,其时间复杂度为O(n^2),其时间复杂度与边得数目无关,而kruskal算法的时间复杂度为O(eloge)跟边的数目有关,适合稀疏图。
kruskal----归并边;prim----归并点
方法一:kruskal,克鲁斯卡尔...
分类:
其他好文 时间:
2014-06-28 09:08:53
阅读次数:
177