public int GetDistanceToTagSetFromNode(Node node, TagSet tagset) { List <Node> nodesWithAtLeastOneTag = GetNodesWithAtLeastOneTag(tagset); if (nodesWithAtLeastOneTag.Count > 0) { Dijkstra dijkstra = new Dijkstra(baseGraph, (Satsuma.Arc arc) => 1.0, DijkstraMode.Sum); for (int i = 0; i < nodesWithAtLeastOneTag.Count; i++) { dijkstra.AddSource(nodesWithAtLeastOneTag[i].node); } dijkstra.RunUntilFixed(node.node); return((int)dijkstra.GetDistance(node.node)); } return(-1); }
public Dictionary <uint, int> GetDistanceToTag(Tag tag) { List <Node> nodesWithTag = GetNodesWithTag(tag); if (nodesWithTag.Count > 0) { Dijkstra dijkstra = new Dijkstra(baseGraph, (Satsuma.Arc arc) => 1.0, DijkstraMode.Sum); for (int i = 0; i < nodesWithTag.Count; i++) { dijkstra.AddSource(nodesWithTag[i].node); } Dictionary <uint, int> dictionary = new Dictionary <uint, int>(); for (int j = 0; j < nodes.Count; j++) { dijkstra.RunUntilFixed(nodes[j].node); dictionary[(uint)nodes[j].node.Id] = (int)dijkstra.GetDistance(nodes[j].node); } return(dictionary); } return(null); }