Combinatorial algorithms: theory and practice. - Reingold, Edward M. (Englewood Cliffs, New Jersey Prentice-Hall, Inc., 2008)