global intmax = 2147483645; global n = 9; int minDistance(int[] dist, bool[] sptSet) { var min = intmax; var min_index = intmax; for (var v = 0; v < n; v = v + 1;) { if ((sptSet[v] == false) & (dist[v] <= min)) { min = dist[v]; min_index = v; } } return min_index; } int[] dijkstra(int[][] adjGraph, int src) { var dist = new int[n]; var sptSet = new bool[n]; for (var i = 0; i < n; i=i+1;) { dist[i] = intmax; sptSet[i] = false; } dist[src] = 0; for (var count = 0; count < n - 1; count = 1 + count;) { var u = minDistance(dist, sptSet); sptSet[u] = true; for (var v = 0; v < n; v = v + 1;) { if (!sptSet[v] & adjGraph[u][v] != 0 & (dist[u] != intmax) & dist[u] + adjGraph[u][v] < dist[v]) { dist[v] = dist[u] + adjGraph[u][v]; } } } return dist; } int program(int argc, string[] argv) { var graph = new int[][] { new int[] { 0, 4, 0, 0, 0, 0, 0, 8, 0 }, new int[] { 4, 0, 8, 0, 0, 0, 0, 11, 0 }, new int[] { 0, 8, 0, 7, 0, 4, 0, 0, 2 }, new int[] { 0, 0, 7, 0, 9, 14, 0, 0, 0 }, new int[] { 0, 0, 0, 9, 0, 10, 0, 0, 0 }, new int[] { 0, 0, 4, 14, 10, 0, 2, 0, 0 }, new int[] { 0, 0, 0, 0, 0, 2, 0, 1, 6 }, new int[] { 8, 11, 0, 0, 0, 0, 1, 0, 7 }, new int[] { 0, 0, 2, 0, 0, 0, 6, 7, 0 } }; var output = dijkstra(graph, 0); var dist = new int[] {0, 4, 12, 19, 21, 11, 9, 8, 14}; var success = true; for (var i = 0; i< n; i = i+1;) { success = success & (output[i] == dist[i]); } if (success) { return 0; } return 1; }