这段时间自己做了几次笔试题,好几次都遇到了有关于并查集求解的问题。然而因为自己对于并查集的不熟悉导致的结果都很不美好,所以决定深入学习一下并查集。
1、并查集的概念
并查集是由一个数组、两个函数(查找一个数的根、合并路线)组成,常用来解决一些不相交集合的合并与查找问题。
2.并查集实现原理(下文给的图的n都取值为10)
(1)元素初始化
给定n个元素组成的一个数组,数组的下标依次为0,1,2,...,n-1;将数组中的每一个数都初始化为-1;
UnionFondSet(int n)
{
v.resize(n,-1);//v为一个自定义的vector
}
(2)元素与元素间的联合关系
假设元素之间的关系是有3个不相交的集合,{0,3,4,5},{1,6,7},{2,8,9};
(3)合并集合
先对{0,3,4,5}进行合并