class PrepareRoutingSubnetworks {

    int removeDeadEndUnvisitedNetworks(final DefaultEdgeFilter bothFilter) {
        StopWatch sw = new StopWatch(bothFilter.getAccessEnc() + " findComponents").start();
        final EdgeFilter outFilter = DefaultEdgeFilter.outEdges(bothFilter.getAccessEnc());

        // partition graph into strongly connected components using Tarjan's algorithm        
        TarjansSCCAlgorithm tarjan = new TarjansSCCAlgorithm(ghStorage, outFilter, true);
        List<IntArrayList> components = tarjan.findComponents();
        logger.info(sw.stop() + ", size:" + components.size());

        return removeEdges(bothFilter, components, minOneWayNetworkSize);
    }

    public  PrepareRoutingSubnetworks(GraphHopperStorage ghStorage, List<FlagEncoder> encoders);

}