public void AddEdge(WeightedDirectedEdge edge) { if (edge == null) { throw new ArgumentNullException(nameof(edge)); } if (adjacencyList[edge.From] == null) { adjacencyList[edge.From] = new List <WeightedDirectedEdge>(); } adjacencyList[edge.From].Add(edge); EdgeNumber++; }
public void RelaxEdge(WeightedDirectedEdge edge) { var fromVertex = edge.From(); var toVertex = edge.To(); if (DistTo[toVertex] > DistTo[fromVertex] + edge.Weight()) { DistTo[toVertex] = DistTo[fromVertex] + edge.Weight(); EdgeTo[toVertex] = edge; var changedNode = new Node(toVertex, DistTo[toVertex]); minHeap.ChangePriority(toVertex, changedNode); } }