public TopologicalSort(IGraph <T, E> graph, IEnumerable <T> subset_vertices)
 {
     _graph = graph;
     _work  = subset_vertices;
     foreach (T v in _work)
     {
         EdgeClassifier.Classify(graph, v, ref classify);
     }
 }
        public TarjanNoBackEdges(IGraph <T, E> graph)
        {
            _graph = graph;
            _work  = _graph.Vertices;
            foreach (T v in _work)
            {
                if (graph.Predecessors(v).Any())
                {
                    continue;
                }

                EdgeClassifier.Classify(graph, v, ref classify);
            }
            foreach (T v in _work)
            {
                Index[v]   = -1;
                LowLink[v] = -1;
            }
        }