13周依旧过得很快,因为数据结构里有讲最小生成树的算法,因此也就跟着老师的节奏去学习这方面的知识。最小生成树目前接触到两种方法,一种是Prim 算法,一种是Kruskal算法。目前只学习了前者,相关题目还没有做,准备下周写一些。另外,下个周末有近代史和英语四级的考试,可能下周会着重复习这 些。感觉....
分类:
其他好文 时间:
2015-06-06 23:26:09
阅读次数:
195
这题题目中有一个很显眼的提示,每种权值的边不会超过10条,这提示我们可以采用些暴力方法。
首先在每个最小生成树中有两个结论:
1、每种权值的边数相等。
2、每种权值所选边构建后图的联通形态相同。
1比较好理解,若1不成立,则最小生成树总权值不固定。
2可以通过Kruskal算法流程来理解。
code:#include
#include
#include...
分类:
Web程序 时间:
2015-06-06 09:16:25
阅读次数:
214
不相交集合的数据结构本来想着来实现基于贪婪思想的Kruskal算法—–最小生成树的算法之一。
却发现当我们合并集合时里面还涉及到一个判断“环”的问题,继而有了本篇博文:不相交集合的数据结构。...
分类:
其他好文 时间:
2015-06-06 09:12:20
阅读次数:
123
~. 最近数据结构课讲到了prim算法,然而一直使用kruskal算法的我还不知prim的思想,实在是寝食难安,于此灯火通明之时写此随笔,以祭奠我睡过去的数据结构课。一,最小生成树之prim prim的思路就是先任取一点(记为st)加入集合(数组s[]) ,然后在顶点集(数组v[]) 中 未被取的....
分类:
编程语言 时间:
2015-06-05 00:07:54
阅读次数:
165
根据图的深度优先遍历和广度优先遍历,可以用最少的边连接所有的顶点,而且不会形成回路。这种连接所有顶点并且路径唯一的树型结构称为生成树或扩展树。实际中,希望产生的生成树的所有边的权值和最小,称之为最小生成树。
常见的最小生成树算法有Kruskal算法和Prim算法。
Kruskal算法每次选取权值最小的边。然后检查是否加入后形成回路,如果形成回路则需要放弃。最终构成最小生成树。n个顶点的图最小生...
分类:
编程语言 时间:
2015-06-04 17:10:21
阅读次数:
151
题目链接:
csu1651
题解思路 :
用到kruskal算法的思想:
枚举这条路径最小的边作为kruskal算法的起始边
当某条边加入一个 边集 后满足起点和终点在一个集合,即可得到一个答案
这些答案的最小值即为answer
中间会用到几个剪枝
代码:
#include
#include
#include
#define MAXN 1...
分类:
其他好文 时间:
2015-06-04 11:54:36
阅读次数:
101
MST , kruskal 直接跑----------------------------------------------------------------------#include#include#include#include#include#define rep( i , n ) fo...
分类:
其他好文 时间:
2015-06-03 23:05:08
阅读次数:
123
一、数论算法 1.求两数的最大公约数 2.求两数的最小公倍数 3.素数的求法 A.小范围内判断一个数是否为质数: B.判断longint范围内的数是否为素数(包含求50000以内的素数表):二、图论算法1.最小生成树A.Prim算法: B.Kruskal算法:(贪心) 按权值递增顺序删去图中的边,若...
分类:
编程语言 时间:
2015-06-02 21:53:26
阅读次数:
186
题目传送门 1 /* 2 最小生成树(Kruskal):以权值为头,带入两个端点,自然的排序;感觉结构体的并查集很好看 3 注意:题目老头要的是两个农田的高度差,中文水平不好,题意理解成和平均值的高度差! 4 */ 5 #include 6 #include 7 #include...
分类:
其他好文 时间:
2015-06-01 18:19:34
阅读次数:
133
http://acm.hdu.edu.cn/showproblem.php?pid=1233题意:就是裸的最小生成树。这里用的是kruskal使用的是并查集,将按距离排序的边,分别把点加到集合里。节点存在在集合里说明是环路。#include#include#include#includeusing ...
分类:
其他好文 时间:
2015-06-01 11:05:12
阅读次数:
159