To ogranicza ilość operacji non-saturating push, które stanowią czynnik zwiększający pesymistyczną złożoność obliczeniową algorytmu.
Aby to zrobić, tworzymy listę wszystkich wierzchołków w grafie w dowolnej kolejności (zostaną uporządkowane podczas działania algorytmu). Dodatkowo dla każdego wierzchołka tworzymy listę sąsiedztwa, której kolejność jest dowolna, ale musi być stała. Elementami tej listy są potencjalni sąsiedzi do których możemy przesłać przepływ. Następnie, kolejno zaczynając od pierwszego wierzchołka na liście przeprowadzamy procedurę Discharge dla każdego wierzchołka jeśli jest aktywny. Jeśli nie możemy wykonać operacji push, wykonujemy relabel i umieszczamy wierzchołek na początku listy.
Procedura Discharge W relabel-to-front, procedura discharge na wierzchołku przebiega następująco:
Function Discharge(u): while excess(u) > 0: if (u.currentNeighbour != NIL): push(u, u.currentNeighbour); u.currentNeighbour = u.nextNeighbour; else: relabel(u); u.currentNeighbour = u.headOfNeighbourList;