private void dfs()

in src/main/java/org/apache/commons/graph/scc/CheriyanMehlhornGabowAlgorithm.java [63:96]


    private void dfs( V vertex )
    {
        marked.add( vertex );
        preorder.put( vertex, preorderCounter++ );
        s.push( vertex );
        p.push( vertex );
        for ( V w : graph.getConnectedVertices( vertex ) )
        {
            if ( !marked.contains( w ) )
            {
                dfs( w );
            }
            else if ( sscId.get( w ) == null )
            {
                while ( preorder.get( p.peek() ) > preorder.get( w ) )
                {
                    p.pop();
                }
            }
        }

        if ( p.peek().equals( vertex ) )
        {
            p.pop();
            V w = null;
            do
            {
                w = s.pop();
                sscId.put( w, sscCounter );
            }
            while ( !vertex.equals( w ) );
            sscCounter++;
        }
    }