private void ComputeNoInit([NotNull] TVertex root) { IEnumerable <TVertex> orderedVertices = VisitedGraph.TopologicalSort(); OnDiscoverVertex(root); foreach (TVertex vertex in orderedVertices) { OnStartVertex(vertex); OnExamineVertex(vertex); foreach (TEdge edge in VisitedGraph.OutEdges(vertex)) { OnExamineEdge(edge); OnDiscoverVertex(edge.Target); bool decreased = Relax(edge); if (decreased) { OnTreeEdge(edge); } else { OnEdgeNotRelaxed(edge); } } OnFinishVertex(vertex); } }