protected override void Relax(EdgeWeightedDigraph digraph, int vertex) { foreach (var edge in digraph.Adjacent(vertex)) { int w = edge.W; if (distanceTo[w] > distanceTo[vertex] + edge.Weight) { distanceTo[w] = distanceTo[vertex] + edge.Weight; edgeTo[w] = edge; if (priorityQueue.Contains(w)) { priorityQueue.Change(w, distanceTo[w]); } else { priorityQueue.Insert(w, distanceTo[w]); } } } }