C# coding for dijkstra's algorithm.

namespace Graph_Algorithmn

{

public class dijstra

{

public dijstra(double[,] G, int s)

{

initial(0, s);

while (queue.Count > 0)

{

int u = getNextVertex();

for (int i = 0; i < s; i++)

{

if (G[u, i] > 0)

{

if (dist[i] > dist[u] + G[u, i])

{

dist[i] = dist[u] + G[u, i];

}

}

}

}

}

public double[] dist { get; set; }

int getNextVertex()

{

var min = double.PositiveInfinity;

int vertex = -1;

foreach (int val in queue)

{

if (dist[val] <= min)

{

min = dist[val];

vertex = val;

}

}

queue.Remove(vertex);

return vertex;

}

List<int> queue = new List<int>();

public void initial(int s, int len)

{

dist = new double[len];

for (int i = 0; i < len; i++)

{

dist[i] = double.PositiveInfinity;

queue.Add(i);

}

dist[0] = 0;

}

}

public partial class Form1 : Form

{

public Form1()

{

InitializeComponent();

ListBox listBox = new ListBox();

double[,] G = new double[4, 4];

G[0, 1] = 3;

G[0, 3] = 6;

G[1, 3] = 1;

G[1, 2] = 3;

G[3, 2] = 1;

dijstra dist = new dijstra(G, 4);

var item = dist.dist;

for (int i = 0; i < item.Length; i++)

{

listBox.Items.Add("Node " + i + " Path Distance = " + item[i]);

}

listBox.Width = this.Width;

listBox.Height = this.Height;

this.Controls.Add(listBox);

}

}

}