![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
并查集
文章平均质量分 68
xuzengqiang
这个作者很懒,什么都没留下…
展开
-
hdu 1856(并查集)
我英语太差了~~处于小学水平,碰到英语题~~唉,不想说,看了别人的解题报告中的题目大意之后才能做,我就转达下题目大意:输入n,然后输入n组数据,表示a与b的关系,最后求出关系最多一组的个数,比方说第一组数据中的最多人一组的就是:{1,2,5,6}~~~ #include #include #include using namespace std; const int MAX=100000原创 2012-02-28 14:48:55 · 371 阅读 · 0 评论 -
nyist 129(It is a tree?)
题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=129 是不是要满足三个条件: 1、只有一个根结点,如果有多个则是森林; 2、除根结点外其他的节点入度只能是1,如有其它,则不是; 3、结点数-边数=1,主要是确保每一个节点只有一个父节点。还要注意空树也是一颗树~~ #include #include #include us原创 2012-02-29 09:21:54 · 367 阅读 · 0 评论 -
nyist 230(彩色棒)---并查集+Trie树
题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=230 分析:题目意思是给你一些棒子,两端颜色不同,问相同的颜色两两相连,问是否会连成一个环。连成一个环是欧拉回路,开始的时候有一个题目是判定树一样是判断欧拉回路,用并查集和奇点的个数判断,以棒子为边,以颜色为点,问题是颜色是字符串,转化为并查集中的点是个难点,可以用并查集求解,将边转换为原创 2012-03-03 10:28:02 · 444 阅读 · 0 评论 -
最近公共祖先--LCA问题
最近公共祖先问题:给定一颗有根树,求其两个节点最近的公共祖先;节点的祖先即从节点至根的路径上的节点的集合。 朴素算法:从u的父亲开始顺着树往上枚举u的一个祖先并保存在一个列表L中,同样枚举v的祖先,当发现v的祖先第一次出现在u的祖先中,输出。 在线LCA算法:令L(u)为u的深度,设L(u) LCA的离线(Tarjan)算法:利用DFS+并查集,算法流程:对于新搜索到的一个结点,首先创建由这原创 2012-03-08 20:54:54 · 1457 阅读 · 0 评论 -
并查集
主要是用来处理两个不相交集合的合并和查询的问题,并用一个树根来表示一个集合。 合并操作:要合并两个集合S1和S2,那么只需要把S1的根的父亲设为S2的根即可。优化方案:将深度小的树成为深度大的子树,称为启发式合并。 查询操作:查找一个元素属于哪个集合,只需顺着叶子到根结点的找到该元素所在的根结点即可。优化:找到该元素的根结点以后将该元素的的父亲设为根节点--路径压缩。 由于深度经常变化,所以我原创 2012-02-27 21:50:35 · 663 阅读 · 0 评论 -
并查集题目总结
有关并查集的知识可以点这里,这里知识说下题目: POJ 1611(意思是有很多人编号为0~n-1,一开始只有编号为0感染了,然后输入多组数据n,m,n是总人数,m为群体数,接着有m行,每一行最前面的一个数表示这个群体的人数,然后输入这些人的编号,在这些群体中只要有一个被感染的话这群人都会被感染,问最后有多少人被感染。) 很裸的并查集,直接输出与0在同一个群体的人的个数即可,代码略。原创 2012-08-09 10:38:21 · 632 阅读 · 0 评论