public static void Main() { System.IO.TextReader s = System.IO.File.OpenText("tinyEWDAG.txt"); //System.IO.TextReader s = System.IO.File.OpenText("mediumEWD.txt"); //System.IO.TextReader s = System.IO.File.OpenText("tinyEWDAG.txt"); DirectedWeightedGraph graph = new DirectedWeightedGraph(s); Console.Write("请输入起点:"); int st = int.Parse(Console.ReadLine()); DijkstraSP dijkstraSP = new DijkstraSP(graph, st); for (int i = 0; i < graph.V; ++i) { if (i == st) { Console.WriteLine("{0}->{0} : 0.0", st); continue; } if (!dijkstraSP.HasPathTo(i)) { Console.WriteLine("{0}->{1} : No paths", st, i); continue; } Double len = 0.0; foreach (var edge in dijkstraSP.PathTo(i)) { Console.Write(edge); Console.Write(","); len += edge.Weight; } Console.WriteLine(" : {0}", len); } }
public static void Main() { System.IO.TextReader s1 = System.IO.File.OpenText("mediumEWD.txt"); DirectedWeightedGraph graph1 = new DirectedWeightedGraph(s1); System.IO.TextReader s2 = System.IO.File.OpenText("mediumEWD.txt"); DirectedWeightedGraph graph2 = new DirectedWeightedGraph(s2); Console.Write("请输入起点:"); int st = int.Parse(Console.ReadLine()); Console.Write("请输入终点:"); int end = int.Parse(Console.ReadLine()); // 最小堆优化 DijkstraSP dijkstraSP = new DijkstraSP(graph1, st); // 拓扑排序优化 AcyclicSP acyclicSP = new AcyclicSP(graph2, st); Console.WriteLine("最小堆的结果:\n" + PrintPath(graph1, dijkstraSP, st, end)); Console.WriteLine("拓扑排序的结果:\n" + PrintPath(graph2, acyclicSP, st, end)); }