You are on page 1of 5

Complejidad algorítmica de Edmonds

Karp
Kevin Pomier
#include <bits/stdc++.h>

#define input freopen("in.txt", "r", stdin)

#define output freopen("out.txt", "w", stdout)

using namespace std;

#define MAX_N 101

int grafo[MAX_N][MAX_N];

int path[MAX_N];

int maxFlow(int s,int t) { 1

int maxFlow = 0; 1

while(true) { n^3

memset(path, -1, sizeof(path)); 1

queue<int> Q; 2
Q.push(s); 1

path[s] = s; 1

while(!Q.empty() && path[t]==-1) { n^2

int currentNode = Q.front(); 2

Q.pop(); 1

for(int i = 0 ; i < MAX_N ; i++) { n

if(path[i]==-1 && grafo[currentNode][i] > 0) { 2

path[i] = currentNode; 1

Q.push(i); 1

int minFlow = 1e9; 1

if(path[t]==-1) { 2

break; 1

for(int from = path[t],to = t; from!=to ; from = path[to = from]) { n

minFlow = min(minFlow,grafo[from][to]); 3

for(int from = path[t],to = t; from!=to ; from = path[to = from]){n

grafo[to][from] += minFlow; 3

grafo[from][to] -= minFlow; 3

maxFlow += minFlow; 1

return maxFlow; 1

You might also like