Algorytm Dinica implementacja

0

Witam,
Postanowiłem ostatnio nieco przysiąść do przepływów w grafie i czytając dzisiaj o algorytmie Dinica, natknąłem się na implementacje tego algorytmu według Marka Cygana:
http://was.zaa.mimuw.edu.pl/sites/default/files/file/s2008-w03/flow.cpp
Nie potrafię zrozumieć jednak po co jest ta tablica "poczatek" z iteratorami do właściwej tablicy z krawedziami.
Tym bardziej nie potrafię tego zrozumieć ponieważ program działa tak samo dobrze jeśli zastąpimy linijkę z forem w dfs'ie
zwykłą linijką do przejścia po wektorze z krawędziami :

for (int i=0; i<krawedzie[x].size();i++)
int u=krawedzie[x][i];

i potem zamieniając *it na u.
Z góry dzięki za wyjaśnienie

0

Zauważ, że skoro it jest referencją, poczatek[x] sie ciagle zmienia, co moze skutkowac tym, ze wszystkie pętle pracujące na poczatek[x] dla danego x, wykonają swoje ciało łącznie krawedzie[x].size() razy. Podczas gdy Twoja implementacja za każdym razem przebiega całą tablicę. Wydaje mi się, że to psuje złożoność.

1 użytkowników online, w tym zalogowanych: 0, gości: 1