CS153/hw5/hw5programs/yingjiao_floydwarshall.oat
jmug cfe502c598 Add all the assignment code.
Signed-off-by: jmug <u.g.a.mariano@gmail.com>
2025-01-24 18:59:28 -08:00

102 lines
2.6 KiB
Text

struct Edge {
int weight;
int source;
int target;
Edge next;
bool hasNext
}
int min(int x, int y) {
if (x < y) {
return x;
} else {
return y;
}
}
int maximum(int x, int y) {
if (x < y | x == 5000) {
return y;
} else {
return x;
}
}
int program(int argc, string[] argv) {
var n = 10;
var arr = new int[][10];
for (var i = 0; i < 10; i = i + 1;) {
arr[i] = new int[10];
for (var j = 0; j < 10; j = j + 1;) {
if (i == j) {
arr[i][j] = 0;
} else {
arr[i][j] = 5000;
}
}
}
var e0 = new Edge {weight = 4; source = 1; target = 2; next = Edge null; hasNext = false};
var e1 = new Edge {weight = 3; source = 2; target = 0; next = e0; hasNext = true};
var e2 = new Edge {weight = 4; source = 8; target = 5; next = e1; hasNext = true};
var e3 = new Edge {weight = 1; source = 5; target = 7; next = e2; hasNext = true};
var e4 = new Edge {weight = 2; source = 3; target = 1; next = e3; hasNext = true};
var e5 = new Edge {weight = 3; source = 5; target = 4; next = e4; hasNext = true};
var e6 = new Edge {weight = 7; source = 2; target = 1; next = e5; hasNext = true};
var e7 = new Edge {weight = 5; source = 3; target = 8; next = e6; hasNext = true};
var e8 = new Edge {weight = 8; source = 9; target = 4; next = e7; hasNext = true};
var e9 = new Edge {weight = 3; source = 2; target = 7; next = e8; hasNext = true};
var e10 = new Edge {weight = 3; source = 0; target = 2; next = e9; hasNext = true};
var e11 = new Edge {weight = 0; source = 0; target = 3; next = e10; hasNext = true};
var e12 = new Edge {weight = 4; source = 3; target = 2; next = e11; hasNext = true};
var e13 = new Edge {weight = 2; source = 1; target = 8; next = e12; hasNext = true};
var e14 = new Edge {weight = 7; source = 5; target = 1; next = e13; hasNext = true};
var e = e14;
while(e.hasNext) {
arr[e.source][e.target] = e.weight;
e = e.next;
}
arr[e.source][e.target] = e.weight;
/*
arr[1][2] = 4;
arr[2][0] = 3;
arr[8][5] = 4;
arr[5][7] = 1;
arr[3][1] = 2;
arr[5][4] = 3;
arr[2][1] = 7;
arr[3][8] = 5;
arr[9][4] = 8;
arr[2][7] = 3;
arr[0][2] = 3;
arr[0][3] = 0;
arr[3][2] = 4;
arr[1][8] = 2;
arr[5][1] = 7;
*/
for (var k = 0; k < n; k = k + 1;) {
for (var i = 0; i < n; i = i + 1;) {
for (var j = 0; j < n; j = j + 1;) {
arr[i][j] = min(arr[i][k] + arr[k][j], arr[i][j]);
}
}
}
var max = 0;
for (var i = 0; i < 10; i = i + 1;) {
for (var j = 0; j < 10; j = j + 1;) {
max = maximum(arr[i][j], max);
}
}
return max;
}