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);
        }