作用
可以轻松记录并判断两个点是否在同一个连通图中
例如给出一些边,问两点是否连通的问题
也就是判断两个元素是否属于同一类
实现方法
用树的形式来记录
点a的父节点就是指a的祖先结点中深度最小的那点,也就是父节点就是自己的那个点
一开始每一个点的父节点都是它自己
*父节点查找方法:
若a的父节点就是自己,则不变,反之,它的父节点为其父节点的父节点,详见代码
若知道a,b在同一类,若a的父节点改为b的父节点
并查集本质上就是查找一个点的父节点
核心代码(查找父节点)
具体实现
int find(int u)
{
if(u==fa[u])
return u;
fa[u]=get(fa[u]);
return fa[u];
}
压缩代码
int find(int u){return u==fa[u]?u:fa[u]=get(fa[u]),fa[u];}