Discrete and Combinatorial Optimization I