Wikipedia describes Tarjan's SCC algorithm the following algorithm tarjan is input: graph G = (V, E) output: set of strongly connected components (sets of vertices) index := 0 S := empty for each v in V do   if (v.index is undefined) then     strongconnect(v)   end if end forfunction strongconnect(v)// Set the depth index for v to the smallest unused indexv.index := indexv.lowlink := indexindex := index + 1S.push(v)v.onStack := true// Consider successors of vfor each (v, w) in E do  if (w.index is undefined) then    // Successor w has not yet been visited; recurse on it    strongconnect(w)    v.lowlink  := min(v.lowlink, w.lowlink)  else if (w.onStack) then    // Successor w is in stack S and hence in the current SCC    v.lowlink  := min(v.lowlink, w.index)  end ifend for// If v is a root node, pop the stack and generate an SCCif (v.lowlink = v.index) then  start a new strongly connected component  repeat    w := S.pop()    w.onStack := false    add w to current strongly connected component  while (w != v)  output the current strongly connected componentend ifend functionIn the part       else if (w.onStack) then       // Successor w is in stack S and hence in the current SCC       v.lowlink  := min(v.lowlink, w.index)      end ifcouldn't we just say w.lowlink as well? Since v's lowlink must be smaller or equal to w's lowlink if we can reach w from v.
How does the search for the lowest link in Tarjan's SCC Algorithm work?
algorithms;graphs;algorithm analysis