Graph Theory and Combinatorial Optimization