并查集模板

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


代码模板:


struct UnionFind {
	int n;
	vector<int> par, rank;

	UnionFind(int _n) {
		n = _n;
		par = vector<int>(n);
		rank = vector<int>(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;
	        }
	    }
	}
};

上一篇:佛系每日养生题178. 分数排名


下一篇:Error running ‘main‘cannot run program ....系统找不到指定的文件