Ejemplo n.º 1
0
                private void DijkstraRelax(uint current, Dictionary <uint, int> dist, Dictionary <uint, uint> parents, DMinHeap <int, uint> fringe)
                {
                    foreach (Edge e in this.Vertices[current].Neighbours.Values)
                    {
                        if (!fringe.ContainsValue(e.To))
                        {
                            continue;
                        }

                        int newDist = dist[current] + e.Weight;
                        if (newDist < dist[e.To])
                        {
                            dist[e.To]    = newDist;
                            parents[e.To] = current;
                            fringe.ChangeKey(e.To, newDist);
                        }
                    }
                }
                private void DijkstraRelax(uint current, Dictionary<uint, int> dist, Dictionary<uint, uint> parents, DMinHeap<int, uint> fringe)
                {
                    foreach (Edge e in this.Vertices[current].Neighbours.Values)
                    {
                        if (!fringe.ContainsValue(e.To))
                            continue;

                        int newDist = dist[current] + e.Weight;
                        if (newDist < dist[e.To])
                        {
                            dist[e.To] = newDist;
                            parents[e.To] = current;
                            fringe.ChangeKey(e.To, newDist);
                        }
                    }
                }