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);
        }