In a nutshell
A strongly connected component is a group of vertices in a directed graph where every vertex can reach every other. Kosaraju's algorithm finds them all in two passes: a depth-first search records the order in which vertices finish, then a second depth-first search on the graph with all edges reversed — taken in reverse finish order — carves out exactly one component per search tree.