并查集模板

并查集模板,第1张

并查集模板

前言:今天是农历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;
	        }
	    }
	}
};

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5714844.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存