最近做了两道并查集的题目,今天做的一道是more is better,选出集合元素最多的集合
我的习惯是每一次查的时候用while找到root,然后进行集合合并,这样的实现就超时了。在网上找了代码用递归的方式寻找root,每一层寻找均将root值赋值给当前元素,作为当前元素的根。实际上就是将集合压扁了,在每一次查找根的过程中,将枝叶节点直接链接至根节点,所以用了递归反而之后的查找会比较块。
HDUO 1856 more is better
最近做了两道并查集的题目,今天做的一道是more is better,选出集合元素最多的集合
我的习惯是每一次查的时候用while找到root,然后进行集合合并,这样的实现就超时了。在网上找了代码用递归的方式寻找root,每一层寻找均将root值赋值给当前元素,作为当前元素的根。实际上就是将集合压扁了,在每一次查找根的过程中,将枝叶节点直接链接至根节点,所以用了递归反而之后的查找会比较块。
HDUO 1856 more is better