at-070D

来源:互联网 发布:临沂知豆电动汽车销售 编辑:程序博客网 时间:2024/06/06 18:01

并查集模板
并查集是将有关系的一系列元素组合成为一个集合并且区分出没有关联的集合元素,

#include<iostream>using namespace std;const int N = 1e5+5;int fa[N],Rank[N],n;void init(){    for(int i=1;i<=n;i++)    {        fa[i]=i;//自己为自己的父节点        Rank[i]=0;    }}int Find(int x){    if(fa[x]!=x)//父节点并非本身,属于某一个集合        fa[x]=Find(fa[x]);//路径压缩    return fa[x];}void uni(int x,int y){    int xx=Find(x);    int yy=Find(y);    if(xx==yy)//x和y属于一个集合        return ;    if(Rank[xx]>Rank[yy])//按秩集合        fa[yy]=xx;    else    {        fa[xx]=yy;        if(Rank[xx]=Rank[yy])            Rank[yy]++;    }}int main(){    int x,y;    init();    uni(x,y);    return 0;}
原创粉丝点击