【OI之路】03图论算法-3并查集

来源:互联网 发布:淘宝冷门暴利产品批发 编辑:程序博客网 时间:2024/05/20 19:32

建议前往我的网站获得最佳体验。

3.3.1定义

并查集,顾名思义就是有“合并集合”和“查找集合”两种操作的关于数据结构的一种算法。

用途
1、维护无向图的连通性。支持判断两个点是否在同一连通块内,和判断增加一条边是否会产生环。
2、用在求解最小生成树的Kruskal算法里。

初始化
自己是自己的老大

3.3.2 代码

找老大:int findfa(int x)0{    if(fa[x]==x) return fa[x]=findfa(fa[x]);    return fa[x];}合并:void join(int x,int y){    int fx=findfa(x),fy=findfa(y);    if(fx!=fy) fa[fx]=fy;}检测环:for(int i=1;i<=边数;i++){    int q=findfa(b[i].x);    int w=findfa(b[i].y);    if(q==w) return 1;//如果在一个集合,就找到了环    join(q,w);}

3.3.3 进阶练习

魏总数星星
星球大战

原创粉丝点击