Distributed Algorithm Design for Constrained Multi-robot Task Assignment