并查集

并查集就是有“合并集合”与“查找集合”两种操作的一种数据结构。比如求解“朋友圈”问题:两个人如果是朋友或者间接朋友, 则认为这两个人属于一个朋友圈,现在求有多少朋友圈。

基本思想就是集合内所有元素组织成一种“树”,用一个数组parent辅助,parent[x]的值是x的父节点,如果x是根,parent[x]=x。 判断两个元素是否属于同一集合,就可以看他们的最终跟节点是否一样。在查找过程中,可能出现路径比较长的问题,可以将parent[x]都 设为x的最终根节点。

一个例子,一堆人,判断任意两个人之间是否是亲戚关系。可以用图做,也可以用并查集做,这样更高效。

Written on January 8, 2019