Example #1
0
        public static Vertex[] Run(Vertex[] vertices)
        {
            List <Vertex> list = new List <Vertex>();

            foreach (Vertex v in vertices)
            {
                TopologicalSort.Run(v, list);
            }

            return(list.ToArray());
        }
Example #2
0
        private static void Run(Vertex vertex, List <Vertex> list)
        {
            if (vertex.Color != Color.White)
            {
                return;
            }

            vertex.Color = Color.Gray;

            foreach (Vertex next in vertex.Vertices)
            {
                if (next.Color == Color.White)
                {
                    next.Parent = vertex;
                    TopologicalSort.Run(next, list);
                }
            }

            vertex.Color = Color.Black;
            list.Insert(0, vertex);
        }