Example #1
0
        static void Main(string[] args)
        {
            Graph <string, int> g = new Graph <string, int>();

            g.EdgeValue = v => v;

            var a = g.AddVertex("a");
            var b = g.AddVertex("b");
            var c = g.AddVertex("c");
            var d = g.AddVertex("d");
            var e = g.AddVertex("e");
            var z = g.AddVertex("z");

            g.AddEdge(4, true, a, b);
            g.AddEdge(2, true, a, c);
            g.AddEdge(1, true, c, b);
            g.AddEdge(5, true, b, d);
            g.AddEdge(8, true, c, d);
            g.AddEdge(10, true, c, e);
            g.AddEdge(2, true, d, e);
            g.AddEdge(3, true, e, z);
            g.AddEdge(6, true, d, z);

            Console.WriteLine("Graph:");
            foreach (var item in g)
            {
                Console.WriteLine(item);
                foreach (var edge in item.OutputEdges)
                {
                    Console.WriteLine(" " + edge);
                }
            }

            Console.WriteLine();
            Console.WriteLine($"Shortest way from {a} to {z}:");

            var l1 = g.ShortWayDijkstra(a, z);

            foreach (var item in l1)
            {
                Console.Write(item + " ");
            }

            Console.WriteLine();

            var l2 = g.ShortWayFloid(a, z);

            foreach (var item in l2)
            {
                Console.Write(item + " ");
            }
        }