果枫-国峰

随笔分类 -  并查集

并查集模板
摘要:并查集学习:下面附模板代码l 并查集:(union-find sets)一种简单的用途广泛的集合. 并查集是若干个不相交集合,能够实现较快的合并和判断元素所在集合的操作,应用很多,如其求无向图的连通分量个数等。最完美的应用当属:实现Kruskar算法求最小生成树。l 并查集的精髓(即它的三种操作,结合实现代码模板进行理解):1、Make_Set(x) 把每一个元素初始化为一个集合初始化后每一个元素的父亲节点是它本身,每一个元素的祖先节点也是它本身(也可以根据情况而变)。2、Find_Set(x) 查找一个元素所在的集合查找一个元素所在的集合,其精髓是找到这个元素所在集合的祖先!这个才是并查集. 阅读全文

posted @ 2012-08-31 19:41 果枫-国峰 阅读(842) 评论(0) 推荐(1)

hdu 杭电 2473 Junk-Mail Filter
摘要:题意:输入N M,N代表开始时存在N种不同的集合数从0~(N-1),M代表有M行输入。 M X Y 代表X与Y的内容相同并在一个集合中。 S X 代表要从X当前的集合中脱离出来成为一个独立的集合。 最后要求的是不同集合数的个数。 输入数据比较大,这题最好用scanf();printf()输入 输出。解法:并查集,在集合中删除元素,用N~N+N+M作为虚拟节点。注意:并查集,找父节点时用压缩路径的方法,本人一开始用了递归,结果不言而知的wa。代码:View Code #include<iostream>#include<algorithm>using namespace 阅读全文

posted @ 2012-08-31 18:47 果枫-国峰 阅读(179) 评论(0) 推荐(0)

导航