Union Find
class DisjointSet{
private:
vector<int> fa;
int _find(int x){
if(fa[x]==x)return x;
else{
int t = fa[x];
fa[x] = _find(t);
return fa[x];
}
};
public:
DisjointSet(int size){
for(int i=0;i<size;i++)fa.push_back(i);
};
int _union(int a, int b){
int fa_a = _find(a);
int fa_b = _find(b);
fa[fa_a] = fa_b;
return fa_b;
};
bool same(int a,int b){
return _find(a) == _find(b);
};
bool root(int a){
return fa[a] == a;
}
};399. 除法求值
959. 由斜杠划分区域
778. 水位上升的泳池中游泳
1202. 交换字符串中的元素
947. 移除最多的同行或同列石头
803. 打砖块
Last updated