基础带权并查集
只能基础查询到根节点的距离
struct DSU{
int fa[N], siz[N], deep[N];
void init(){
for(int i = 1; i <= n; i++){
fa[i] = i;
siz[i] = 1;
deep[i] = 0;
}
}
int find(int x){
int tmpfa = fa[x];
if(fa[x] != x){
fa[x] = find(fa[x]); // 先把当前父亲节点的更新了,再去计算
deep[x] += deep[tmpfa];
}
return fa[x];
}
void merge(int x, int y){
int fx = find(x), fy = find(y);
if(fx != fy){
deep[fx] += siz[fy];
siz[fy] += siz[fx];
fa[fx] = fy;
}
}
bool same(int x, int y){
return find(x) == find(y);
}
int size(int x){
return siz[find(x)];
}
} dsu;
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)