并查集模板

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


代码模板:


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

	DSU(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 merge(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;
	        }
	    }
	}
};

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值