docs: private static void omitEdge(int[] edges, int[] idx, int[] sizes, int omit) {
      for(int i = 0; i < idx.length; i++) {
        idx[i] = i;
      }
      Arrays.fill(sizes, 1);
      for(int i = 0, j = 0, e = edges.length - 1; j < e; i++, j += 2) {
        if(i == omit) {
          continue;
        }
        int ea = edges[j + 1], eb = edges[j];
        if(eb < ea) { // Swap
          int tmp = eb;
          eb = ea;
          ea = tmp;
        }
        final int pa = follow(ea, idx), pb = follow(eb, idx);
        assert (pa != pb) : "Must be disjoint - MST inconsistent.";
        sizes[idx[pa]] += sizes[idx[pb]];
        idx[pb] = idx[pa];
      }
    }