并查集
1、并查集是什么 并查集是用来在一个集合中进行元素搜索,或者将集合合并的一种方法。主要通过数组来实现。 2、并查集的实现思路 我们可以将一个数组中每个单位存储的元素初始化为它的下标,代表初始时它的编号就是它自己。在之后的操作中,如果两个集合合并,那么就将其中一个集合编号所在的数组位置修改为另一个集合编号作为代表。这时,当我们搜索到这两个集合时,会发现它们的编号相同,即属于同一个集合。 3、代码实现 并查集主要有以下的几个操作 初始化 for ( int i = 0 ; i < n ; i ++ ) //n为集合编号的最大值 num [ i ] = i ; 查询操作 int find ( int x ) { int head = x ; while ( num [ head ] != head ) //查询所有集合中最终的编号 head = num [ head ] ; while ( x != num [ x ] ) //路径压缩,缩短下次搜索的时间 { x = num [ x ] ; num [ x ] = head ; } return head ; } 合并操作 void join ( int a , int b ) //将两个集合合并 { int a1 = find ( a ) ; int b1 = find ( b ) ; num [ a1 ] = b1 ; while