算是图论系列中的第一个算法,努力。 写博客时看到的: http://www.renfei.org/blog/bipartite-matching.html二分图: 简单来说,如果图中点可以被分为两组,并且使得所有边都跨越组的边界,则这就是一个二分图。准确地说:把一个图的顶点划分为两个不相交集U和.....
分类:
编程语言 时间:
2015-11-20 23:08:58
阅读次数:
276
并查集(Union-find Sets)是一种非常精巧而实用的数据结构,它主要用于处理一些不相交集合的合并问题。一些常见的用途有求连通子图、求最小生成树的 Kruskal 算法和求最近公共祖先(Least Common Ancestors, LCA)等。
使用并查集时,首先会存在一组不相交的动态集合 $S = \left\{ {{S_1},{S_2}, \cdots ,{S_k}} \rig...
分类:
其他好文 时间:
2015-08-31 23:53:36
阅读次数:
353
对于一个集合常见的操作有:判断一个元素是否属于一个集合;合并两个集合等等。而并查集是处理一些不相交集合(Disjoint Sets)的合并及查询问题的有利工具。 并查集是利用树结构实现的。一个集合用一棵树来表示,而多个集合便是森林。并查集中的“并”是将两个集合合并即两棵树合并成一颗树;“查”是...
分类:
其他好文 时间:
2015-08-30 22:52:51
阅读次数:
243
并查集是一种用途广泛的数据结构,能够快速地处理集合的合并和查询问题,并且实现起来非常方便,在很多场合中都有着非常巧妙的应用,。本文首先介绍并查集的定义、原理及具体实现,然后以其在最小生成树算法中的一个经典应用为例讲解其具体使用方法。一 并查集原理及实现并查集是一种树型的数据结构,用于处理一些不相交集...
分类:
编程语言 时间:
2015-08-30 15:45:48
阅读次数:
153
并查集:(union-find sets)
一种简单的用途广泛的集合. 并查集是若干个不相交集合,能够实现较快的合并和判断元素所在集合的操作,应用很多,如其求无向图的连通分量个数等。最完美的应用当属:实现Kruskar算法求最小生成树。
并查集的精髓(即它的三种操作,结合实现代码模板进行理解):
1、MakeSet(x) 把每一个元素初始化为一个集合
初始化后每一个元素的父亲节点是它本...
分类:
其他好文 时间:
2015-08-28 21:30:51
阅读次数:
179
并查集,顾名思义,合并 查找 集合;
并查集是一种树型的数据结构,用于处理一些不相交集合(Disjoint Sets)的合并及查询问题。常常在使用中以森林来表示。
对于概念等等的这里不再赘述,直接讲解应用
如果再加上并查集的初始化,总共就有了3个操作。
初始化,MakeSet
void MakeSet(){
for(int i=1;i<=maxn;i++){
paren...
分类:
其他好文 时间:
2015-08-11 01:24:13
阅读次数:
122
04-树5. File Transfer (25)
时间限制
150 ms
内存限制
65536 kB
代码长度限制
8000 B
判题程序
Standard
作者
CHEN, Yue
We have a network of computers and a list of...
分类:
其他好文 时间:
2015-07-22 22:44:26
阅读次数:
154
在不相交集合中的另一种更快的实现中,用有根树来表示集合。树中的每个成员指向其父节点,每棵树的根包含了代表(representative),并且是他自己的父节点。不相交森林即由多棵这样的树组成,如下图所示:
[注:(b)是(a)UNION(e,g)的结果]
采用上述表示方法直观上并不比采用链表表示算法更快,但是可以通过“按秩合并”和“路径压缩”来提升效率。
按秩合并(union by ra...
分类:
编程语言 时间:
2015-07-18 18:42:34
阅读次数:
455
不相交集合(Disjoint-set )数据结构保持一组不相交的动态集合S={S(1),S(2),...,S(k)}.每个集合通过一个代表(representative)来识别,即集合中的某个成员。设x表示一个对象,不相交集合支持操作:
MAKE-SET(x):建立一个新的结合,其唯一成员(也即代表)就是x。因为各集合是不相交的,故要求x没有在其他集合中出现过。
UNION(x,y):将包含x...
分类:
编程语言 时间:
2015-07-18 17:08:09
阅读次数:
154
并查集是一种树型的数据结构,用于处理一些不相交集合(Disjoint Sets)的合并及查询问题。常常在使用中以森林来表示。集就是让每个元素构成一个单元素的集合,也就是按一定顺序将属于同一组的元素所在的集合合并。Find:确定元素属于哪一个子集。它可以被用来确定两个元素是否属于同一子集合。Union...
分类:
其他好文 时间:
2015-07-17 20:40:24
阅读次数:
170