示例#1
0
        static void Main(string[] args)
        {
            // See Graph.png for visual representation of the graph.
            Graph g = new Graph();

            g.AddEdge('A', new Dictionary <char, int>()
            {
                { 'B', 1 }, { 'C', 6 }, { 'D', 5 }
            });
            g.AddEdge('B', new Dictionary <char, int>()
            {
                { 'A', 1 }, { 'C', 6 }
            });
            g.AddEdge('C', new Dictionary <char, int>()
            {
                { 'A', 6 }, { 'B', 6 }, { 'F', 3 }, { 'E', 7 }
            });
            g.AddEdge('D', new Dictionary <char, int>()
            {
                { 'A', 5 }, { 'G', 10 }, { 'F', 2 }
            });
            g.AddEdge('E', new Dictionary <char, int>()
            {
                { 'C', 7 }, { 'H', 12 }
            });
            g.AddEdge('F', new Dictionary <char, int>()
            {
                { 'C', 3 }, { 'D', 2 }, { 'H', 8 }
            });
            g.AddEdge('G', new Dictionary <char, int>()
            {
                { 'D', 10 }, { 'H', 7 }, { 'I', 3 }
            });
            g.AddEdge('H', new Dictionary <char, int>()
            {
                { 'E', 12 }, { 'F', 8 }, { 'G', 7 }, { 'I', 8 }
            });
            g.AddEdge('I', new Dictionary <char, int>()
            {
                { 'G', 3 }, { 'H', 8 }
            });

            List <char> shortestPath = g.FindShortestPath('A', 'I');

            for (int i = shortestPath.Count - 1; i >= 0; i--)
            {
                Console.WriteLine(shortestPath[i]);
            }

            Console.ReadKey();
        }