In a one-way network, which groups can all reach each OTHER — there and back? Those are the strongly-connected components: maximal knots where every node can reach every other following the arrows. Collapse each knot to a point and the tangled graph becomes a clean flowchart (a DAG). Two depth-first passes — one forward, one on the reversed graph — find them all in linear time. Slide to reveal the knots.
A strongly-connected component (SCC) of a DIRECTED graph is a maximal set of vertices where each can reach every other along directed edges. Kosaraju’s algorithm finds them in O(V+E) with two depth-first passes: one on the graph to order vertices by finish time, one on the REVERSED graph in that order — each tree of the second pass is an SCC (Tarjan does it in one pass via low-links). Contracting each SCC to a point yields the CONDENSATION, always a directed ACYCLIC graph — so SCCs expose cycles, deadlocks, and the coarse structure of any directed network (web, dependencies, state machines). A fail-loud self-check throws unless a known two-cycle graph resolves into its two SCCs. ◆ real graph algorithms, node-verified.
SCCs are defined for DIRECTED graphs (undirected connectivity is the simpler union-find case); the condensation-is-a-DAG and O(V+E) results are exact.