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