private void construirGrafo (Nodo origen) {
        
        origen.minDistancia = 0;
        
        PriorityQueue<Nodo> cola = new PriorityQueue<>();
      	cola.add(origen);

	while (!cola.isEmpty()) {

	    Nodo u = cola.poll();

            for (Arista e : u.adyacente) {
                
                Nodo v = e.destino;
                int auxDistancia = e.distancia;
                int distanciaAcumulada = u.minDistancia + auxDistancia;
                
		if (distanciaAcumulada < v.minDistancia) {
		    cola.remove(v);
                    this.grafo.remove(v);
		    v.minDistancia = distanciaAcumulada ;
		    v.previo = u;
		    cola.add(v);
                    this.grafo.add(v);
		}
            }
        }
    }