public void DistanceTest() { var alg = new QuickGraph.Algorithms.ShortestPath.UndirectedDijkstraShortestPathAlgorithm <MapNode, UndirectedEdge <MapNode> >(Maps.Fleet, w => 1); alg.SetRootVertex(MapNodes.Get("sev")); alg.Compute(); Assert.AreEqual(6, alg.Distances[MapNodes.Get("ven")]); Assert.AreEqual(13, alg.Distances[MapNodes.Get("stp_sc")]); }
public static OccupiedMapNodeGroups Get(Board board, int groupSize = 6) { OccupiedMapNodeGroups groups = new OccupiedMapNodeGroups(); foreach (var kvp in board.OccupiedMapNodes) { var alg = new QuickGraph.Algorithms.ShortestPath.UndirectedDijkstraShortestPathAlgorithm <MapNode, UndirectedEdge <MapNode> >(kvp.Value.MyMap, w => 1); alg.SetRootVertex(kvp.Key); alg.Compute(); List <KeyValuePair <MapNode, double> > orderedDistances = alg.Distances .Where(kvp2 => board.OccupiedMapNodes.ContainsKey(kvp2.Key)) .OrderBy(kvp2 => kvp2.Value).ToList(); var group = new OccupiedMapNodeGroup(); group.AddRange(orderedDistances.Take(groupSize).Select(kvp2 => kvp2.Key)); groups.Add(group); } return(groups); }