所谓并查集就是将连通分量【无环】组织成一棵树的数据结构。
普通的并查集合在最坏情况下有可能会将一个连通分量组织成一个斜树的样子。
为了避免这种情况,我们会选择将深度较低的孩子作为深度较高的树的根的一个子节点。
当然这样也避免不了logN,所以还需要的黑科技就是路径压缩。简单来说,就是在递归找根的时候,将所有节点直接指向根节点,这显然比深度比较更有效地多。
int find(int x){
if(x==pre[x]) else return x;
return pre[x]=find(pre[x]);
}