并查集时一个很有用的一个算法,其用来处理不相交合并和查询的问题。
有一个blog讲解很详细,推荐给大家:并查集详解
在其中的代码解释较为繁琐,但是很详尽。
我的模板如下:
int fa[10000] ;///在使用前记住还原,一个点的父亲为自身,fa[i] = i ;
int Find(int x)///查找,包含状态压缩
{
return (fa[x] == x) ? fa[x] : fa[x] = Find(fa[x]) ;
}
void Merge(int x , int y)///合并
{
int fx = Find(x) , fy = Find(y);
if(fx != fy) fa[fx] = fy ;
}
后续会加一些例题来进行示例。
菜得不一样,菜出新高度。