v->distance_from_source = rank;
for(e = v->leaving_edge_list_root; e; e = e->next_leaving_edge) {
tv = int(e->terminal_vertex - _vertices);
nb_predecessors[tv]--;
ASSERT(nb_predecessors[tv] >= 0);
if(nb_predecessors[tv] == 0) {
v->distance_from_source = rank;
for(e = v->leaving_edge_list_root; e; e = e->next_leaving_edge) {
tv = int(e->terminal_vertex - _vertices);
nb_predecessors[tv]--;
ASSERT(nb_predecessors[tv] >= 0);
if(nb_predecessors[tv] == 0) {