Split a directed graph into groups that can all reach each other: Kosaraju's two searches, or Tarjan's one search with low-links, and the DAG of components that is left.
This interactive visualization needs JavaScript.