public StrongComponents(IGraph graph, Flags flags = 0) { Graph = graph; if (0 != (flags & Flags.CreateComponents)) { Components = new List <HashSet <Node> >(); } var forwardDfs = new ForwardDfs(); forwardDfs.Run(graph); var backwardDfs = new BackwardDfs { Parent = this }; backwardDfs.Run(graph, forwardDfs.ReverseExitOrder); }
public StrongComponents(IGraph graph, Flags flags = Flags.None) { Graph = graph; if ((flags & Flags.CreateComponents) != 0) { Components = new List <HashSet <Node> >(); } ForwardDfs forwardDfs = new ForwardDfs(); forwardDfs.Run(graph, null); BackwardDfs backwardDfs = new BackwardDfs { Parent = this }; backwardDfs.Run(graph, forwardDfs.ReverseExitOrder); }