您的位置:首页 > 其它

并查集

2015-10-10 10:33 141 查看
const int maxn=1e5+7;
int ufs[maxn];
int Find(int x) {
if(ufs[x]<0) return x;
return ufs[x]=Find(ufs[x]);   //查找根的同时进行路径压缩
}
void init() {
memset(ufs,-1,sizeof(ufs));
}
void U(int a, int b) {   //合并
if((a=Find(a))==(b=Find(b))) return;
ufs[a]+=ufs[b];
ufs[b]=a;
}
int getNum(int a){   //并查集元素个数
return -ufs[Find(a)];
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: