并查集

来源:互联网 发布:bootcamp for mac 编辑:程序博客网 时间:2024/06/16 03:36

并查集主要用于把一些不相交的集合进行合并,查询两个元素是否属于同一集合等。并查集初始化,是将单个元素华为单独的集合。查,是查找元素所在的集合(根节点)。并,是将两个元素所在的集合合并为一个集合。

/*初始化*/void init(){    for(int i=0; i<maxn; i++)        fa[i] = i;}/*查找所在集合*/int find_set(int x){    //一直找到根节点,只有根节点才满足fa[x]=x    if(fa[x] != x)        fa[x] = find_set(fa[x]);    return fa[x];}/*集合合并*/void union_set(int x,int y){    int fa_x = find_set(x);    int fa_y = find_set(y);    if(fa_x != fa_y) fa[fa_y] = fa_x;}

并查集可以用于判断图的连通性,若图是连通的,那么只有一个集合存在,也就是只有一个元素满足fa[x]=x,否则不连通。
 

0 0
原创粉丝点击