private static GraphDfs BuildGraphDfs(string[] projects, string[][] dependencies) { GraphDfs graph = new GraphDfs(); foreach (var project in projects) { graph.GetOrCreateNode(project); } foreach (string[] dependency in dependencies) { string first = dependency[0]; string second = dependency[1]; graph.AddEdge(first, second); } return(graph); }
// solution #2 : build DPS public static Stack <ProjectDfs> FindBuildOrderDfs(string[] projects, string[][] dependencies) { GraphDfs graph = BuildGraphDfs(projects, dependencies); return(OrderProjectsDfs(graph.GetNodes())); }