// ReSharper disable once UnusedMember.Local private static void GraphUsageDemo() { var cities = new[] { "Seattle", "San Francisco", "Los Angeles", "Riverside", "Phoenix", "Chicago", "Boston", "New York", "Atlanta", "Miami", "Dallas", "Houston", "Detroit", "Philadelphia", "Washington" }; var values = Enum.GetValues(typeof(City)).Cast <City>().ToList(); var unweightedCityGraph = new UnweightedGraph <City>(values); var weightedCityGraph = new WeightedGraph <City>(values); unweightedCityGraph.AddEdges(new List <(City first, City second)> { (City.Seattle, City.Chicago), (City.Seattle, City.SanFrancisco), (City.SanFrancisco, City.Riverside), (City.SanFrancisco, City.LosAngeles), (City.LosAngeles, City.Riverside), (City.LosAngeles, City.Phoenix), (City.Riverside, City.Philadelphia), (City.Riverside, City.Chicago), (City.Phoenix, City.Dallas), (City.Phoenix, City.Houston), (City.Dallas, City.Chicago), (City.Dallas, City.Atlanta), (City.Dallas, City.Houston), (City.Houston, City.Atlanta), (City.Houston, City.Miami), (City.Atlanta, City.Chicago), (City.Atlanta, City.Washington), (City.Atlanta, City.Miami), (City.Miami, City.Washington), (City.Chicago, City.Detroit), (City.Detroit, City.Boston), (City.Detroit, City.Washington), (City.Detroit, City.NewYork), (City.Boston, City.NewYork), (City.NewYork, City.Philadelphia), (City.Philadelphia, City.Washington) }); weightedCityGraph.AddEdges(new List <(City first, City second, float weight)> { (City.Seattle, City.Chicago, 1737), (City.Seattle, City.SanFrancisco, 678), (City.SanFrancisco, City.Riverside, 386), (City.SanFrancisco, City.LosAngeles, 348), (City.LosAngeles, City.Riverside, 50), (City.LosAngeles, City.Phoenix, 357), (City.Riverside, City.Phoenix, 307), (City.Riverside, City.Chicago, 1704), (City.Phoenix, City.Dallas, 887), (City.Phoenix, City.Houston, 1015), (City.Dallas, City.Chicago, 805), (City.Dallas, City.Atlanta, 721), (City.Dallas, City.Houston, 225), (City.Houston, City.Atlanta, 702), (City.Houston, City.Miami, 968), (City.Atlanta, City.Chicago, 588), (City.Atlanta, City.Washington, 543), (City.Atlanta, City.Miami, 604), (City.Miami, City.Washington, 923), (City.Chicago, City.Detroit, 238), (City.Detroit, City.Boston, 613), (City.Detroit, City.Washington, 396), (City.Detroit, City.NewYork, 482), (City.Boston, City.NewYork, 190), (City.NewYork, City.Philadelphia, 81), (City.Philadelphia, City.Washington, 123) }); Console.WriteLine(unweightedCityGraph.ToString()); Console.WriteLine(weightedCityGraph.ToString()); var result = weightedCityGraph.GetMinimumSpanningTree(0); weightedCityGraph.PrintWeightedPath(result); Console.WriteLine(); var dijkstraResult = weightedCityGraph.GetDijkstraResult(City.LosAngeles); var nameDistance = weightedCityGraph.DistanceArrayToDistanceMap(dijkstraResult.Distances); Console.WriteLine($"Distances from {nameof(City.LosAngeles)}:"); foreach (var(name, distance) in nameDistance) { Console.WriteLine($"{name.ToString()} : {distance:F1}"); } Console.WriteLine(); Console.WriteLine($"Shortest path from {nameof(City.LosAngeles)} to {nameof(City.Boston)}"); var path = WeightedGraph <City> .PathMapToPath(weightedCityGraph.IndexOf(City.LosAngeles), weightedCityGraph.IndexOf(City.Boston), dijkstraResult.PathMap); weightedCityGraph.PrintWeightedPath(path); }