#define MAXN 1000
typedef int ElementType;
typedef int SetName;
typedef ElementType SetType[MAXN];
/*集合元素查找*/
SetName Find(SetType S,ElementType X){
//默认集合元素全部初始化为-1
for(;s[X]>=0;X=S[X]);
return X;
}
/*集合并运算*/
void Union(SetType S, SetName Root1, SetName Root2){
//这里默认Root1和Root2是不同集合的根结点
S[Root2]=Root1;
}
/*按秩合并*/
void Union(SetType S,SetName Root1,SetName Root2){ // Root1,Root2都是负数
if(S[Root1]<S[Root2]){
S[Root2]+=S[Root1];
S[Root1]=Root2;
}
else{
S[Root1]+=S[Root2];
S[Root2]=Root1;
}
}
/*Find的路径压缩*/
SetName Find(SetType S,ElementType X){
if(S[X]<0)
return X;
else
return S[X]=Find(S,S[X]);
}
集合及其运算
最新推荐文章于 2023-07-18 13:25:20 发布