并查集并查集 :是一种树型的数据结构,常用语处理一些不相交集合的合并及查询问题。为了解释并查集的原理,我将举一个更有爱的例子。 话说江湖上散落着各式各样的大侠,有上千个之多。他们没有什么正当职业,整天背着剑在外面走来走去,碰到和自己不是一路人的,就免不了要打一架。但大侠们有一个优点就是讲义气,绝对不...
分类:
其他好文 时间:
2014-12-31 18:18:14
阅读次数:
275
从来没有这么艰难地完成一道算法题过!经过8次失败之后总算提交成功了!所以决定写一篇博文,对并查集的相关内容做一些总结。
普通并查集的操作无非是两种,find_set(x)即找到节点x所在的集合的代表节点,或者是union_set(x,y),即将x和y所在的两个集合合并起来。如下图所示,有左右两个并集
通常,我们会选用并查集中父节点为自己的元素作为这个并查集的代表,例如图中的节点a和节点e。那么...
分类:
其他好文 时间:
2014-12-24 21:32:27
阅读次数:
164
How Many Tables
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 14683 Accepted Submission(s): 7187
Problem Description
Today is ...
分类:
其他好文 时间:
2014-12-04 17:58:44
阅读次数:
160
1.背景《算法》一书中提到了关于算法的一些基本思想优秀的算法因为能够解决实际的问题而变得更为重要; 高效算法的代码可以很简单; 理解某个实现的性能特点是一项有趣而令人满足的挑战; 在解决同一个问题的多种算法之间进行选择时,科学方法是一项重要工具; 迭代式改进能够让算法效率越来越高; 使用union-...
分类:
编程语言 时间:
2014-11-02 01:54:43
阅读次数:
326
UVa的题目好多,本题是数据结构的运用,就是Union Find并查集的运用。主要使用路径压缩。甚至不须要合并树了,由于没有反复的连线和改动单亲节点的操作。郁闷的就是不太熟悉这个Oj系统,竟然使用库中的abs就会WA,自己写了个abs小函数就过了。题目:http://uva.onlinejudge....
分类:
Web程序 时间:
2014-09-26 18:46:08
阅读次数:
179
1.动态联通性问题描述:
有N个元素,开始时我们让每一个元素肚子构成一个集合。然后按一定的顺序将属于同一组中的元素合并,构成新的集合。其间要反复查询某个元素在哪个集合中。如下所示:
解决办法:
(1)Quick-Find
声明一个长度为N的数组id,数组中元素的值代表它所属组的编号。将数组中的元素初始化为每个元素的索引值,这样就表示开始时每个元素各自构成一个独立的集合...
分类:
其他好文 时间:
2014-09-21 17:40:11
阅读次数:
881
UVA11987 - Almost Union-Find (并查集带删除)
题目链接
题目大意:给出三个操作: 1 p q 表示将p q 这两个数所在的集合合并在一起。2 p q表示将p这个数从原有的集合中拿出来放到q所在的集合中。3 p表示查询p所在的集合总共有几个元素,和是多少。
解题思路:并查集。只是并查集中并没有删除的操作。所以就需要将删除的这个点的影响降到0,也就是给删...
分类:
其他好文 时间:
2014-09-18 11:29:33
阅读次数:
233
Union Find
动态链接:
这里union(x,y) 相当于一个函数,这个函数建立两个点,x,y的链接。而connected(x,y)用于检测两点的链接性,即是否处于链接状态.
connected(0,7)就是用于检测0,7这两点是否相连。
Union find能做很酷帅的事情,迷宫连通图的查找~...
分类:
其他好文 时间:
2014-09-07 12:21:33
阅读次数:
281
本题的类型我一看就想到使用并查集解了,因为要查找是否有环,这是并查集的典型用法。
但是由于本题数据实在是太水了,故此有人使用直接模拟都过了。这让本题降了个档次。
这里使用并查集解。而且可以根据需要简化并查集函数,代码还是很好打的。
#include
#include
#include
#include
#include
#include
#include
#includ...
分类:
其他好文 时间:
2014-08-21 17:10:24
阅读次数:
175
最近在学习Robert Sedgewic,Kevin Wayne的Algorithms第四版,谈谈有关并查集的概念。
首先,我们知道并查集是一种树型的数据结构,用于处理一些不相交集合,而最重要的就是联合查找算法,Union Find。
并查集的基本操作:
makeSet(s):建立一个新的并查集,其中包含 s 个单元素集合。
unionSet(x, y):把元素 x 和元素 y 所在的...
分类:
其他好文 时间:
2014-08-19 14:38:34
阅读次数:
235