不相交(任意两个集合之间没有交集)集,并查集(合并,查询集合)

https://blog.csdn.net/wzy_1988/article/details/8769740?utm_source=blogxgwz3

关键在于:
union(x,y)是指
包含x和y的动态集合(比如说Sx和Sy)合并为一个新的集合(即这两个集合的并集),而不是简单的把两个元素合并成一个集合,而是把两个元素所在的集合合并成一个新集合
合并两个不相交集合操作很简单:
利用FIND-SET找到其中两个集合的祖先,将一个集合的祖先指向另一个集合的祖先即可。
比如1,2和6,1两组数,
1,union(1,2)合并了1所在的集合{1}和2所在的集合{2}得到了集合{1,2}
2,union(6,1)合并了6所在的集合{6}和1所在的集合{1,2}得到了新集合{1,2,6}而不是{1,6}

你可能感兴趣的:(算法)