Computing strongly connected components in a linear number of symbolic steps
Introduction to Algorithms