generic augmenting path algorithm