您的位置:首页 > 其它

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

2017-09-13 13:30 162 查看

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

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 进阶练习

魏总数星星

星球大战
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: