int main(void) { int **flow, **capacities, i; flow = (int **) calloc(NODES, sizeof(int*)); capacities = (int **) calloc(NODES, sizeof(int*)); for (i = 0; i < NODES; i++) { flow[i] = (int *) calloc(NODES, sizeof(int)); capacities[i] = (int *) calloc(NODES, sizeof(int)); } //Sample graph capacities[0][1] = 2; capacities[0][2] = 9; capacities[1][2] = 1; capacities[1][3] = 0; capacities[1][4] = 0; capacities[2][4] = 7; capacities[3][5] = 7; capacities[4][5] = 4; printf("Capacity:\n"); printMatrix(capacities); printf("Max Flow:\n%d\n", pushRelabel(capacities, flow, 0, 5)); printf("Flows:\n"); printMatrix(flow); return 0; }
int main(int argc, char *argv[]) { int **flow, **capacities, i; flow = (int **) calloc(NODES, sizeof(int*)); capacities = (int **) calloc(NODES, sizeof(int*)); for (i = 0; i < NODES; ++i) { flow[i] = (int *) calloc(NODES, sizeof(int)); capacities[i] = (int *) calloc(NODES, sizeof(int)); } //Sample graph /* capacities[0][1] = 2; capacities[0][2] = 9; capacities[1][2] = 1; capacities[1][3] = 0; capacities[1][4] = 0; capacities[2][4] = 7; capacities[3][5] = 7; capacities[4][5] = 4; */ /* for (i = 1; i <= 10; ++i) { capacities[0][i + 10] = 1; capacities[i][21] = 1; } capacities[11][1] = 1; capacities[11][3] = 1; capacities[11][4] = 1; capacities[12][1] = 1; capacities[12][2] = 1; capacities[12][8] = 1; capacities[13][1] = 1; capacities[13][3] = 1; capacities[14][3] = 1; capacities[14][4] = 1; capacities[15][3] = 1; capacities[15][4] = 1; capacities[16][2] = 1; capacities[16][5] = 1; capacities[16][7] = 1; capacities[17][5] = 1; capacities[17][6] = 1; capacities[17][10] = 1; capacities[18][5] = 1; capacities[18][6] = 1; capacities[18][7] = 1; capacities[18][8] = 1; capacities[18][10] = 1; capacities[19][9] = 1; capacities[20][4] = 1; capacities[20][9] = 1; */ capacities[0][1] = 12; capacities[0][2] = 1; capacities[0][3] = 2; capacities[1][2] = 1; capacities[1][4] = 7; capacities[1][5] = 5; capacities[2][5] = 1; capacities[2][6] = 7; capacities[3][2] = 3; capacities[3][5] = 2; capacities[3][6] = 5; capacities[4][2] = 2; capacities[4][5] = 3; capacities[4][7] = 3; capacities[5][6] = 2; capacities[5][7] = 3; capacities[5][8] = 1; capacities[6][8] = 9; capacities[7][8] = 1; capacities[7][9] = 4; capacities[8][9] = 11; printf("Capacity:\n"); printMatrix((const int**)capacities); printf("Max Flow:\n%d\n", pushRelabel((const int**)capacities, flow, 0, NODES - 1)); printf("Flows:\n"); printMatrix((const int**)flow); for (i = 0; i < NODES; ++i) { free(flow[i]); free(capacities[i]); } free(flow); free(capacities); return 0; }