Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- int fordFulkerson(int n, int s, int t) {
- memset(fnet, 0, sizeof(fnet));
- int flow = 0;
- while (true) {
- memset(prev, -1, sizeof(prev));
- qf = qb = 0;
- prev[q[qb++] = s] = -2;
- while (qb > qf && prev[t] == -1)
- for (int u = q[qf++], v = 0; v < n; v++)
- if (prev[v] == -1 && fnet[u][v] - fnet[v][u] < cap[u][v])
- prev[q[qb++] = v] = u;
- if (prev[t] == -1)
- break;
- int bot = 0x7FFFFFFF;
- for (int v = t, u = prev[v]; u >= 0; v = u, u = prev[v])
- bot = min(bot, cap[u][v] - fnet[u][v] + fnet[v][u]);
- for (int v = t, u = prev[v]; u >= 0; v = u, u = prev[v])
- fnet[u][v] += bot;
- flow += bot;
- }
- return flow;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement