コード例 #1
0
        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);
            }
        }
コード例 #2
0
        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));
        }