Change hw6 to an unsolved version.
Signed-off-by: jmug <u.g.a.mariano@gmail.com>
This commit is contained in:
parent
0c04936ccf
commit
ee01a8f5b2
186 changed files with 9605 additions and 4019 deletions
69
hw6/hw4programs/sp22_tests/dijkstras.oat
Normal file
69
hw6/hw4programs/sp22_tests/dijkstras.oat
Normal file
|
|
@ -0,0 +1,69 @@
|
|||
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;
|
||||
}
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue