Ejemplo n.º 1
0
 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;
         }
     }
 }
Ejemplo n.º 2
0
 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]);
             }
         }
     }
 }