void Relax(EdgeWeightedDiagraph g, int v) { foreach (DirectedEdge e in g.AdjList(v)) { int w = e.To(); if (distTo[w] < distTo[v] + e.Weight()) { distTo[w] = distTo[v] + e.Weight(); edgeTo[w] = e; } } }
void Relax(EdgeWeightedDiagraph g, int v) { foreach (DirectedEdge e in g.AdjList(v)) { int w = e.To(); double weight = e.Weight(); if (distTo[w] > distTo[v] + weight) { //relax edgeTo[w] = e; distTo[w] = distTo[v] + weight; if (pq.Contains(w)) { pq.ChangeKey(w, distTo[w]); } else { pq.Insert(w, distTo[w]); } } } }