Lecture 10: Depth-First Search