code: private void blossom(int v, int w, int base) {
          base = dsf.getRoot(base);
          int[] supports1 = blossomSupports(v, w, base);
          int[] supports2 = blossomSupports(w, v, base);
  
          for (int i = 0; i < supports1.length; i++)
              dsf.makeUnion(supports1[i], supports1[0]);
          for (int i = 0; i < supports2.length; i++)
              dsf.makeUnion(supports2[i], supports2[0]);
  
          even[dsf.getRoot(base)] = even[base];
      }
docs: Create a new blossom for the specified 'bridge' edge.
  
  @param v    adjacent to w
  @param w    adjacent to v
  @param base connected to the stem (common ancestor of v and w)