畅通工程再续Description相信大家都听说一个“百岛湖”的地方吧,百岛湖的居民生活在不同的小岛中,当他们想去其他的小岛时都要通过划小船来实现。现在政府决定大力发展百岛湖,发展首先要解决的问题当然是交通问题,政府决定实现百岛湖的全畅通!经过考察小组RPRush对百岛湖的情况充分了解后,决定在符合...
分类:
其他好文 时间:
2014-07-22 22:52:58
阅读次数:
278
题意:给你一个数n,代表有n个村庄,然后要你输入n行n列个数,第i行的第j个元素代表i村与j村的距离,要你求出连通n个村庄所需修的最短路所需要的最大边
思路:用Kruskal算法求
AC代码:
#include
#include
#include
using namespace std;
#define N 125000 //最多的边数为n*(n-1)/2
int u[N],v[N],...
分类:
其他好文 时间:
2014-07-22 22:34:35
阅读次数:
148
因为这个算法比较简单,网上的内容页比较丰富,这里就简单说了。Kruskal算法的核心思想是以“边”(edge)为主角,以此把序把短边放到集合当中,只选取那些不构成环的,直到所有的顶点都存在集合当中。该算法的理论依据就是最小生成树的性质:(例如:v∈V-U),且(u,v)具有最小权值,则最小生成树性质...
分类:
其他好文 时间:
2014-07-21 14:19:19
阅读次数:
210
最小生成树的性质
MST性质:设G = (V,E)是连通带权图,U是V的真子集。如果(u,v)∈E,且u∈U,v∈V-U,且在所有这样的边中,
(u,v)的权c[u][v]最小,那么一定存在G的一棵最小生成树,(u,v)为其中一条边。
构造最小生成树,要解决以下两个问题:
(1).尽可能选取权值小的边,但不能构成回路(也就是环)。
(2).选取n-1条恰当的边以连接网的n个顶点。...
分类:
其他好文 时间:
2014-07-19 23:27:19
阅读次数:
285
并查集(Union-find Sets)是一种非常精巧而实用的数据结构,它主要用于处理一些不相交集合的合并问题。一些常见的用途有求连通子图、求最小生成树的 Kruskal 算法和求最近公共祖先(Least Common Ancestors, LCA)等。
使用并查集时,首先会存在一组不相交的动态集合 S={S1,S2,?,Sk},一般都会使用一个整数表示集合中的一个元素。
每个集合可能包含一个...
分类:
其他好文 时间:
2014-07-19 23:23:29
阅读次数:
378
题目链接:http://poj.org/problem?id=1789
思路:把每一行看成一个一个点,每两行之间不懂得字符个数就看做是权值。然后用kruskal算法计算出最小生成树
我写了两个代码一个是用优先队列写的,但是超时啦,不知道为什么,希望有人可以解答。后面用的数组sort排序然后才AC。
code:
数组sort排序AC代码:
#include
#include
#includ...
分类:
其他好文 时间:
2014-07-18 12:27:55
阅读次数:
242
Prim算法1.概览普里姆算法(Prim算法),图论中的一种算法,可在加权连通图里搜索最小生成树。意即由此算法搜索到的边子集所构成的树中,不但包括了连通图里的所有顶点(英语:Vertex (graph theory)),且其所有边的权值之和亦为最小。该算法于1930年由捷克数学家沃伊捷赫·亚尔尼克(...
分类:
其他好文 时间:
2014-07-12 00:26:56
阅读次数:
298
2014.07.04 23:03简介: 给定一个无向带权连通图(三个条件),选出n-1条边将这n个顶点连成一棵树,使得这棵树的权值之和最小。描述: 本次使用Kruskal算法来解决这个问题。 如果有n个顶点的话,我们需要n-1条边来拼成一棵树。 Kruskal算法的基本思路,是每次拼上一条边...
分类:
编程语言 时间:
2014-07-06 17:07:20
阅读次数:
245
搭建一个最小代价的网络,最原始的最小生成树的应用。
这里使用Union find和Kruskal算法求解.
注意:
1 给出的数据是原始的矩阵图,但是需要转化为边表示的图,方便运用Kruskal,因为需要sort
2 减少边,一个矩阵最多需要(N*N-N)>>1条边,有人讨论本题是否有向,那是无意义的,因为本题的最小生成树和方向无关。
3 使用Union find是为了判断是否有环,比原...
分类:
Web程序 时间:
2014-06-30 08:10:08
阅读次数:
200
题目:
输入顶点数目,边的数目,输入每条边的两个顶点编号还有每条边的权值,求最小生成树,输出最小生成树的权值。。
注意:prim算法适合稠密图,其时间复杂度为O(n^2),其时间复杂度与边得数目无关,而kruskal算法的时间复杂度为O(eloge)跟边的数目有关,适合稀疏图。
kruskal----归并边;prim----归并点
方法一:kruskal,克鲁斯卡尔...
分类:
其他好文 时间:
2014-06-28 09:08:53
阅读次数:
177