Graph Theory. An Algorithmic Approach