- for (i = 0; i < size; i++) {
- /* Bottom bit of each element of this array stores whether that element
- * is opposite to its parent, which starts off as false */
- dsf[i] = i << 1;
- }
+ for (i = 0; i < size; i++) dsf[i] = 6;
+ /* Bottom bit of each element of this array stores whether that
+ * element is opposite to its parent, which starts off as
+ * false. Second bit of each element stores whether that element
+ * is the root of its tree or not. If it's not the root, the
+ * remaining 30 bits are the parent, otherwise the remaining 30
+ * bits are the number of elements in the tree. */