algorithms dasgupta papadimitriou vazirani solution manual