Introduction to algorithms - Cormen, Thomas H, Leiserson, Charles E & Rivest, Ronald L (The Massachusetts Institute of Technology, Cambridge, 1990)