hash-define-organization / Hacktober-Fest-2021

Repository for community contributions
19 stars 98 forks source link

Kosaraju Algorithm #353

Open pshivesh8 opened 2 years ago

pshivesh8 commented 2 years ago

Given a Directed Graph with V vertices (Numbered from 0 to V-1) and E edges, Find the number of strongly connected components in the graph.

1) Create an empty stack ‘S’ and do a DFS traversal of a graph. In DFS traversal, after calling recursive DFS for adjacent vertices of a vertex, push the vertex to stack. In the above graph, if we start DFS from vertex 0, we get vertices in the stack as 1, 2, 4, 3, 0. 2) Reverse directions of all arcs to obtain the transpose graph. 3) One by one pop a vertex from S while S is not empty. Let the popped vertex be ‘v’. Take v as the source and do DFS. The DFS starting from v prints strongly connected component of v. In the above example, we process vertices in order 0, 3, 4, 2, 1 (One by one popped from stack).

Alternatives of this solution are Tarjan's Algorithm and Path-Based Algorithm.

pshivesh8 commented 2 years ago

Please Assign this issue to me as a part of Hacktoberfest'21. I will solve this in C++