Reachability must hold in both directions
A directed path from A to B need not provide a return path. Strong connectivity requires reachability both ways, possibly through intermediate vertices rather than direct opposite edges. A one-way chain does not form one strong component.
Mutual reachability is an equivalence relation and partitions all vertices into disjoint classes. Each component is maximal by inclusion: it cannot be enlarged while preserving mutual reachability. This does not mean selecting only the largest component by vertex count.
Using directed order in two searches
Kosaraju–Sharir first reverses the edges and computes reverse DFS postorder there. It then searches the original graph from unmarked vertices in that order, identifying one component per search. The order is essential; an arbitrary reachable set is not necessarily a strong component.
Adjacency-list preprocessing takes O(V+E), assigning component identifiers. Later strong-connectivity queries compare identifiers in constant time. Those identifiers label the computed partition rather than guaranteeing stable numbering after graph changes.
Condensing components into an acyclic graph
Collapsing each component into one vertex produces an acyclic condensation graph. A directed cycle among distinct components would make them mutually reachable, contradicting their separation.
Condensation separates internal cycles from dependencies between regions. It describes reachability under the supplied edge relation rather than adding domain meaning. Component labels alone also do not reconstruct every route when an actual path is required.