Use cases of Inverse Graph
To find the strongly connected components in a directed graph (Kosaraju’s algorithm):
In Kosaraju’s Algorithm, we run a DFS on the inverse of the original graph and store the nodes in order of their finishing times, that is a node is stored when all of its children have already been stored in previous DFS calls. The reason is that the finishing times obtained from the DFS traversal of the Inverse Graph are in topological order. When we perform DFS on G starting from the vertex with the highest finishing time, we are effectively exploring one strongly connected component at a time.