public String executeDijkstra (String nodo) {
        
        StringBuilder buffer = new StringBuilder();
        
        final String origen = nodo;
            
        int posicion = 0;
        int costeTotal = 0;
        
        // Se obtiene la posición donde se encuentra el nodo origen
        for (int i=0; i<grafo.size(); i++) {
            if (grafo.get(i).toString().equalsIgnoreCase(origen)) {
                posicion = i;
            }            
        }
        
        // Se construye el grafo indicando el nodo origen
        construirGrafo(grafo.get(posicion));

        // Se calculan los caminos mínimos para las asignaturas matriculadas
        for (int i= 0; i<matriculas.size(); i++) {
            
            String clase = matriculas.get(i);
            int contador = 0;
            while (!grafo.get(contador).toString().equalsIgnoreCase(clase)) {
                contador++;
            }
            
            Nodo claseMatriculada = grafo.get(contador);
            List<Nodo> path = calcularRutaNodo (claseMatriculada);

            for (int j=0; j<path.size();j++) {
                buffer.append(path.get(j)).append(" ");
                
            }

            buffer.append("CosteIda = ")
                    .append(claseMatriculada.minDistancia)
                    .append("\n");
            
            costeTotal = costeTotal + claseMatriculada.minDistancia;

        }
        
        buffer.append("Coste Total = ")
                .append(costeTotal*2);
        
        System.out.println("Coste Total = " + costeTotal*2);
        
        return buffer.toString();
    }