Algorytm bazuje na dwóch funkcjach:

Push Push z do oznacza przesłanie całej możliwej ilości nadmiarowego przepływu z do Aby przeprowadzić procedurę push, spełnione muszą być trzy warunki:

| jest aktywny || lub Więcej przepływu dociera do wierzchołka niż go opuszcza. |- | || Istnieje krawędź residualna od do dla której |- | style="width:300px"| || jest wyższy niż

Jeśli powyższe warunki są spełnione, można przeprowadzić push:

Function Push(u,v) flow = min(excess(u), c(u,v)-f(u,v)); excess(u) -= flow; // odejmuje ilość przepływu, która zostanie przesłana dalej excess(v) += flow; // dodaje przepływ do wierzchołka do którego przesyłamy f(u,v) += flow; // dodaje przepływ do krawędzi (u,v) f(v,u) -= flow; // odejmuje przepływ od krawędzi przeciwnej, aby zachować skośną symetrię

Relabel Kiedy wykonujemy operację relabel na wierzchołku zwiększamy jego wysokość do momentu kiedy jest o 1 większa od najniższego sąsiada w grafie residualnym. Warunki dla relabel:

| jest aktywny || |- | gdzie

Mamy więc nadmiarowy przepływ do przesłania, jednak nie znajdujemy się wyżej niż którykolwiek z sąsiadów posiadających dostępną pojemność wzdłuż ich krawędzi.