public static Graph_AdjacencyList_Lite ReverseGraph(Graph_AdjacencyList_Lite graphToReverse)
        {
            Graph_AdjacencyList_Lite reversedGraph = new Graph_AdjacencyList_Lite(graphToReverse.Order);

            foreach (int v in graphToReverse.Vertices.Keys)
            {
                reversedGraph.AddVertex(v);
                List<int> neighbors = graphToReverse.Vertices[v];
                foreach (int neighbor in neighbors)
                {
                    if (!reversedGraph.Vertices.ContainsKey(neighbor))
                    {
                        reversedGraph.AddVertex(neighbor);
                    }
                    reversedGraph.AddDirectedEdge(neighbor, v);
                }
            }

            return reversedGraph;
        }