public BuscaLargura(GrafoListaAdjacencia grafo, int inicial) { ArestaPara = new int[grafo.QuantidadeVertices]; DistanciaPara = new int[grafo.QuantidadeVertices]; for (int i = 0; i < grafo.QuantidadeVertices; i++) { DistanciaPara[i] = -1; ArestaPara[i] = -1; } Inicial = inicial; ExecutarBusca(grafo, inicial); }
private void ExecutarBusca(GrafoListaAdjacencia grafo, int inicial) { var fila = new Queue <int>(); fila.Enqueue(inicial); DistanciaPara[inicial] = 0; while (fila.Count != 0) { int v = fila.Dequeue(); foreach (var w in grafo.Adjacencia[v]) { if (DistanciaPara[w] == -1) { fila.Enqueue(w); DistanciaPara[w] = DistanciaPara[v] + 1; ArestaPara[w] = v; } } } }