В DFS вы можете подсчитать элементы, инициализируя два счетчика и увеличивая их в процедуре DFS-VISIT (+1 узел при каждом вызове процедуры и +1 дуга каждый раз, когда список смежности исследовал). Мне было интересно, как получить тот же результат в BFS. Это псевдокод BFS из «Введение в алгоритмы» Кормена, где G - это граф, s - исходный узел, d - расстояние, а π - узел отца. Как я могу изменить его, чтобы получить количество узлов и дуг в G?Подсчет узлов и дуг в алгоритме BFS
BFS(G, s)
for each node u ∈ G.V - {s}
u.color = white
u.d = ∞
u.π = NIL
s.color = GRAY
s.d = 0
s.π = NIL
Q = Ø
ENQUEUE(Q, s)
while Q != Ø
u = DEQUEUE(Q)
for each v ∈ G.Adj[u]
if v.color == WHITE
v.color = GRAY
v.d = u.d + 1
v.π = u
ENQUEUE(Q, v)
u.color = BLACK