Introduction to Algorithms, Fourth Edition
Thomas H. Cormen & Charles E. Leiserson & Ronald L. Rivest & Clifford Stein