并查集必背模板
class UnionFind{
public:
UnionFind(int n){
parent = vector<int>(n);
rank = vector<int>(n);
for(int i = 0; i < n; i++)
parent[i] = i;
}
void uni(int x, int y)
{
int rootx = find(x);
int rooty = find(y);
if(rootx != rooty){
if(rank[rootx] > rank[rooty])
parent[rooty] = rootx;
else if(rank[rootx] < rank[rooty])
parent[rootx] = rooty;
else {
parent[rooty] = rootx;
rank[rootx]++;
}
}
}
int find(int x)
{
if(parent[x] != x)
parent[x] = find(parent[x]);
return parent[x];
}
private:
vector<int> parent;
vector<int> rank;
};
本文来自博客园,作者:静候佳茵,转载请注明原文链接:https://www.cnblogs.com/hitwherznchjy/p/16540687.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步