void initial(int s[]) {
for (int i = 0; i < SiZE; i++) {
s[i] = -1;
}
}
//int Find(int s[],int x) {
// while (s[x] >= 0)
// x = s[x];
// return x;
//}
//void Union(int s[],int Root1,int Root2) {
// if (Root1 == Root2)return;
// s[Root2] = Root1;
//}
int main() {
return 0;
}
find函数优化
int Find(int s[], int x) {
int root = x;
//找到它的根
while (s[root] >= 0)root = s[root];
//将他的父节点接到最上面的根上面去
while (root != x) {
int t = s[x];
s[x] = root;
x = t;
}
return root;
}
Union函数优化
void Union(int s[], int Root1, int Root2) {
if (Root1 == Root2)return;
if (s[Root1] < s[Root2]) {
s[Root1] += s[Root2];
s[Root2] = Root1;
}
else {
s[Root2] += s[Root1];
s[Root1] = Root2;
}
}