diff --git a/Algoritmi_2/Laboratorio/Lab2/out/production/Lab2/BFS.class b/Algoritmi_2/Laboratorio/Lab2/out/production/Lab2/BFS.class
index 348d385d60ec99810e1b66d5c2b3eee9f53aa096..041e207f9977a33c57a19c4ac323e3e47dc23d2a 100644
Binary files a/Algoritmi_2/Laboratorio/Lab2/out/production/Lab2/BFS.class and b/Algoritmi_2/Laboratorio/Lab2/out/production/Lab2/BFS.class differ
diff --git a/Algoritmi_2/Laboratorio/Lab2/out/production/Lab2/Main.class b/Algoritmi_2/Laboratorio/Lab2/out/production/Lab2/Main.class
index 90720ff9e33207c51bb006f685d4752eb3ee7351..bf9286671bb03c9fefd0e19a3864335107bfa92c 100644
Binary files a/Algoritmi_2/Laboratorio/Lab2/out/production/Lab2/Main.class and b/Algoritmi_2/Laboratorio/Lab2/out/production/Lab2/Main.class differ
diff --git a/Algoritmi_2/Laboratorio/Lab2/src/BFS.java b/Algoritmi_2/Laboratorio/Lab2/src/BFS.java
index 0641c795c474497b740b151dcdec16d6cbb3f16e..e42eb55674a9050ada95117465d58ee27ed87546 100644
--- a/Algoritmi_2/Laboratorio/Lab2/src/BFS.java
+++ b/Algoritmi_2/Laboratorio/Lab2/src/BFS.java
@@ -159,14 +159,14 @@ public class BFS {
         return alberoBFSdallaSorgente;
     }
 
-    private void cammminoMinimoImpl(DirectedGraph bfsAlbero, int sorg, int dest, ArrayList<Integer> path) {
+    private void cammminoMinimoImpl(DirectedGraph bfsAlbero, int sorg, int dest, ArrayList<Integer> path, ArrayList<Boolean> founded) {
         //Se ho trovato il nodo
         if (sorg == dest) {
+            founded.add(true);
             return;
         }
 
         //Se sono nella foglia sbagliata
-
         if (((Collection<?>) bfsAlbero.getNeighbors(sorg)).isEmpty()) {
             //Pulisco il percorso corrente perché errato
             path.clear();
@@ -176,32 +176,29 @@ public class BFS {
         //Allora devo ancora esplorare
         for (Integer node : bfsAlbero.getNeighbors(sorg)) {
             path.add(node);
-            //System.out.println(">>> Nodo: " + node);
-            cammminoMinimoImpl(bfsAlbero, node, dest, path);
-            if (node == dest) {
+            System.out.println(">>> Nodo: " + node);
+            cammminoMinimoImpl(bfsAlbero, node, dest, path, founded);
+            if (founded.contains(true)) {
                 break;
             }
         }
-
     }
 
 
     public ArrayList<Integer> camminoMinimo(int sorgente, int destinazione) {
         //L'idea è quella di usare il BFS Albero, perché aciclico, ed in questo modo trovare il percorso.
 
-        //Proviamo con la ricorsione
-
+        //Provo con la ricorsione
         //Implementazione sbagliata, ma l'idea credo sia giusta
 
         DirectedGraph bfsAlbero = bfsTreeDirected(sorgente);
-        boolean[] founded = new boolean[this.myGraph.getOrder()];
         ArrayList<Integer> returnArray = new ArrayList<>();
+        ArrayList<Boolean> founded = new ArrayList<>();
 
         System.out.println(bfsAlbero);
 
-        cammminoMinimoImpl(bfsAlbero, sorgente, destinazione, returnArray);
-
-
+        cammminoMinimoImpl(bfsAlbero, sorgente, destinazione, returnArray, founded);
+        returnArray.addFirst(sorgente);
         return returnArray;
     }
 }
diff --git a/Algoritmi_2/Laboratorio/Lab2/src/Main.java b/Algoritmi_2/Laboratorio/Lab2/src/Main.java
index 85189f5e2c08780fa85115d598edf691383d4a49..5b21021c85bc1763564ab38949e46e1bb1cec5cb 100644
--- a/Algoritmi_2/Laboratorio/Lab2/src/Main.java
+++ b/Algoritmi_2/Laboratorio/Lab2/src/Main.java
@@ -5,10 +5,10 @@ import java.util.Arrays;
 
 public class Main {
     public static void main(String[] args) {
-        Graph mioGrafo = new UndirectedGraph("7; 0 4; 4 3; 1 3; 1 2; 0 2; 0 5; 5 2"); //Num Nodi + Archi
+        Graph mioGrafo = new UndirectedGraph("10; 0 1; 1 2; 1 5; 1 4; 2 4; 2 3; 2 4; 3 9; 5 7; 7 6"); //Num Nodi + Archi
         BFS mioBFS = new BFS(mioGrafo);
         int source = 0;
-        int destination = 1;
+        int destination = 6;
 
         System.out.println(">>> Sorgente delle Operazione: " + source);
         System.out.println(">>> Destinazione delle Operazione: " + destination);