Strongly Connected | Practice Medium 0 attempts
GeeksforGeeks ↗

Strongly Connected | Practice

Medium GraphBFSDFS GeeksforGeeks

Find all strongly connected components (SCCs) in a directed graph.

Example: V=5, graph → SCCs: [[0,1,2],[3],[4]]

Sample Input
Sample Output
Constraints
  • 1 <= V <= 5000
  • 0 <= E <= V*(V-1)
Topics

Kosaraju's Algorithm

function findSCCs(V, adj) {
  const visited = Array(V).fill(false), stack = [];
  function dfs1(u) { visited[u]=true; for (const v of adj[u]) if (!visited[v]) dfs1(v); stack.push(u); }
  for (let i=0;i<V;i++) if (!visited[i]) dfs1(i);
  const radj = Array.from({length:V}, ()=>[]);
  for (let u=0;u<V;u++) for (const v of adj[u]) radj[v].push(u);
  visited.fill(false); const result = [];
  function dfs2(u, comp) { visited[u]=true; comp.push(u); for (const v of radj[u]) if (!visited[v]) dfs2(v, comp); }
  while (stack.length) {
    const u = stack.pop();
    if (!visited[u]) { const comp = []; dfs2(u, comp); result.push(comp); }
  }
  return result;
}

Time: O(V + E) | Space: O(V)

Saved in this browser only. Private to you.

JavaScript