code: def _alternate(u, bigraph, visitU, visitV, matchV):
      
      visitU[u] = True
      for v in bigraph[u]:
          if not visitV[v]:
              visitV[v] = True
              assert matchV[v] is not None  # otherwise match is not maximum
              _alternate(matchV[v], bigraph, visitU, visitV, matchV)
docs: extend alternating tree from free vertex u.
        visitU, visitV marks all vertices covered by the tree.