@@ -366,20 +366,24 @@ function vertices(
366366 n = nb_vertices (g, Val (side))
367367 degrees_dist2 = zeros (T, n)
368368 visited = fill (false , n)
369+ vertices_visited = zeros (T, n- 1 )
370+ num_visited = zero (T)
369371 for v in vertices (g, Val (side))
370372 for w1 in neighbors (g, Val (side), v)
371373 for w2 in neighbors (g, Val (other_side), w1)
372374 if w2 != v && ! visited[w2]
373375 degrees_dist2[v] += 1
374376 visited[w2] = true
377+ num_visited += 1
378+ vertices_visited[num_visited] = w2
375379 end
376380 end
377381 end
378- for w1 in neighbors (g, Val (side), v)
379- for w2 in neighbors (g, Val (other_side), w1)
380- visited[w2] = false
381- end
382+ for k in 1 : num_visited
383+ z = vertices_visited[k]
384+ visited[z] = false
382385 end
386+ num_visited = 0
383387 end
384388 if degree_increasing (; degtype, direction)
385389 degrees = zeros (T, n)
@@ -390,26 +394,25 @@ function vertices(
390394 db = DegreeBuckets (T, degrees, maxd2; reproduce_colpack= order. reproduce_colpack)
391395 π = T[]
392396 sizehint! (π, n)
393- fill! (visited, false )
394397 for _ in 1 : nb_vertices (g, Val (side))
395398 u = pop_next_candidate! (db; direction)
396399 direction == :low2high ? push! (π, u) : pushfirst! (π, u)
397400 for w in neighbors (g, Val (side), u)
398401 for v in neighbors (g, Val (other_side), w)
399- if v == u || visited[v]
400- continue
401- else
402+ if v != u && ! visited[v]
402403 visited[v] = true
404+ num_visited += 1
405+ vertices_visited[num_visited] = v
403406 end
404407 already_ordered (db, v) && continue
405408 update_bucket! (db, v; degtype, direction)
406409 end
407410 end
408- for w in neighbors (g, Val (side), u)
409- for v in neighbors (g, Val (other_side), w)
410- visited[v] = false # reset only the toggled ones to false
411- end
411+ for k in 1 : num_visited
412+ z = vertices_visited[k]
413+ visited[z] = false
412414 end
415+ num_visited = 0
413416 end
414417 return π
415418end
0 commit comments