public List<Vertice<int>> verticesADistanciaConBFS(Grafo<int> grafo,Vertice<int> origen, int aristas) { bool[] visitados = new bool[grafo.getVertices().Count]; Cola<Vertice<int>> c = new Cola<Vertice<int>>(); List<Vertice<int>> listaV = new List<Vertice<int>>(); Vertice<int> vertAux; int nivel = 0; c.encolar(origen); c.encolar(null); visitados[origen.getPosicion() -1] = true; while(!c.esVacia()) { vertAux = c.desencolar(); if(vertAux == null) { if(nivel == aristas) { return listaV; } nivel++; listaV.Clear(); if(!c.esVacia()) { c.encolar(null); } } if(vertAux != null) { listaV.Add(vertAux); foreach (var ady in vertAux.getAdyacentes()) { if(!visitados[ady.getDestino().getPosicion() - 1]) { c.encolar(ady.getDestino()); visitados[ady.getDestino().getPosicion() - 1] = true; } } } } return null; }
public void BFS(Vertice <T> origen) { bool[] visitados = new bool[this.vertices.Count]; Cola <Vertice <T> > c = new Cola <Vertice <T> >(); Vertice <T> vertAux; c.encolar(origen); visitados[origen.getPosicion() - 1] = true; while (!c.esVacia()) { vertAux = c.desencolar(); Console.Write(vertAux.getDato() + " "); foreach (var ady in vertAux.getAdyacentes()) { if (!visitados[ady.getDestino().getPosicion() - 1]) { c.encolar(ady.getDestino()); visitados[ady.getDestino().getPosicion() - 1] = true; } } } }