Nu cred ca e bine sa optimizeze in cazul asta deoarece valoarea se poate schimba.
De ex cand faci un BF din nodul 1:
vector<int> v;
v.push_back(1)
for (int i = 0; i < v.size(); i++) {
for (int j = 0; j < vecini[v[i]]; j++) {
int vecin = vecini[v[i]][j]
if (!viz[vecin]) {
vecin.push_back(vecin)
}
}
}
In cazul de fata vrei ca in primul for, valoarea lui v.size() sa se recalculeze de fiecare data deoarece se schimba.