Branch and cut algorithms for the vehicle routing problem