void apsp(int *shortest, int *distance, int numOfCity) { int i, j, k; int *s, *d; int x; s = shortest; d = distance; for (i = 0; i < numOfCity; i++) for (j = 0; j < numOfCity; j++) { *s++ = (j != i) ? *d : 0; d++; } for (k = 0; k < numOfCity; k++) { s = shortest; for (i = 0; i < numOfCity; i++) for (j = 0; j < numOfCity; j++) { if (*s > (x = *(shortest + i*numOfCity + k) + *(shortest + k*numOfCity + j))) *s = x; s++; } } }