We present faster algorithms for computing the 2-edge and 2-vertex strongly
connected components of a directed graph, which are straightforward
generalizations of strongly connected components. While in undirected graphs
the 2-edge and 2-vertex connected components can be found in linear time, in
directed graphs only rather simple O(mn)-time algorithms were known. We use
a hierarchical sparsification technique to obtain algorithms that run in time
O(n2). For 2-edge strongly connected components our algorithm gives the
first running time improvement in 20 years. Additionally we present an O(m2/logn)-time algorithm for 2-edge strongly connected components, and thus
improve over the O(mn) running time also when m=O(n). Our approach
extends to k-edge and k-vertex strongly connected components for any constant k
with a running time of O(n2log2n) for edges and O(n3) for vertices