Mid Coding

Dijkstra's Algorithm for shortest path?

int[] Dijkstra(Dictionary<int, List<(int neighbor, int weight)>>

graph, int source, int vertices) {

int[] dist = new int[vertices];

for (int i = 0; i < vertices; i++) dist[i] = int.MaxValue;

dist[source] = 0;

var pq = new SortedSet<(int dist, int node)>();

pq.Add((0, source));

while (pq.Count > 0) {

var current = pq.Min;

pq.Remove(current);

int u = current.node;

foreach (var (v, w) in graph[u]) {

if (dist[u] + w < dist[v]) {

if (dist[v] != int.MaxValue)

pq.Remove((dist[v], v));

dist[v] = dist[u] + w;

pq.Add((dist[v], v));

return dist;

Explanation:

Uses a priority queue to pick node with min dist; relax edges.

More from C# Programming Tutorial

All questions for this course