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;         
        }
Ejemplo n.º 2
0
        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;
                    }
                }
            }
        }