private static bool IsDirectedAcyclicGraph(Vertex[] vertices) { foreach (Vertex v in vertices) { v.Reset(); } return(!vertices.Any(v => TopologicalSortTestClass.HasCycle(v))); }
private static bool HasCycle(Vertex vertex) { if (vertex.Color == Color.Gray) { return(true); } if (vertex.Color == Color.Black) { return(false); } vertex.Color = Color.Gray; if (vertex.Vertices.Any(v => TopologicalSortTestClass.HasCycle(v))) { return(true); } vertex.Color = Color.Black; return(false); }