Introduction to Algorithms - Clifford Stein (The MIT Press, 2002)