Introduction to Combinatorial Optimization