栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

并查集模板

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

并查集模板

前言:今天是农历2021的最后一天!今天就不介绍什么新算法了,放一个带有路径压缩和按秩合并的并查集模板吧,祝大家在新的一年里,都能和挚友走在一起,union 长存!


代码模板:

struct UnionFind {
	int n;
	vector par, rank;

	UnionFind(int _n) {
		n = _n;
		par = vector(n);
		rank = vector(n, 1);
		for (int i = 0; i < n; ++i)
			par[i] = i;
	}

	int find(int x){
	    if(x == par[x])
	        return x;
	    return par[x] = find(par[x]);
	}
	    
	void unite(int x, int y){
	    x = find(x), y = find(y);
	    
	    if(x != y){
	        if(rank[x] > rank[y]){
	            rank[x] += rank[y];
	            par[y] = x;
	        }else{
	            rank[y] += rank[x];
	            par[x] = y;
	        }
	    }
	}
};

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/718528.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号