Индексы массива - наш юниверс, т.е. элементы. Значения по этим индексам - номер disjoint set, к которому этот элемент принадлежит.
void makeSet(x) {
arr[x] = groupID;
groupID++;
}
groupID - текущий свободный индекс в массиве.
int find(x) {
return arr[x];
}
void union(x, y) {
// всем элементам y ставим номера x
for (int i = 0; i < n; i++) {
if (arr[i] == arr[y]) {
arr[i] = arr[x];
}
}
}