diff --git a/Algoritmi_2/Laboratorio/Lab2/out/production/Lab2/BFS.class b/Algoritmi_2/Laboratorio/Lab2/out/production/Lab2/BFS.class
index 041e207f9977a33c57a19c4ac323e3e47dc23d2a..67cbb26ec9b958a1820c0acbcb642b8ac0673edd 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 bf9286671bb03c9fefd0e19a3864335107bfa92c..5e26f2131cf76a898d2078414f54b1b3e7357322 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 e42eb55674a9050ada95117465d58ee27ed87546..82eb4e908d389ca0284206f67c25dea2a5d87b61 100644
--- a/Algoritmi_2/Laboratorio/Lab2/src/BFS.java
+++ b/Algoritmi_2/Laboratorio/Lab2/src/BFS.java
@@ -159,27 +159,31 @@ public class BFS {
         return alberoBFSdallaSorgente;
     }
 
-    private void cammminoMinimoImpl(DirectedGraph bfsAlbero, int sorg, int dest, ArrayList<Integer> path, ArrayList<Boolean> founded) {
+    private void cammminoMinimoImpl(DirectedGraph bfsAlbero, int sorg, int dest, ArrayList<Integer> path, boolean[] founded) {
         //Se ho trovato il nodo
         if (sorg == dest) {
-            founded.add(true);
+            founded[0] = true;
             return;
         }
 
         //Se sono nella foglia sbagliata
+        /*
         if (((Collection<?>) bfsAlbero.getNeighbors(sorg)).isEmpty()) {
             //Pulisco il percorso corrente perché errato
             path.clear();
         }
 
+        */
+
 
         //Allora devo ancora esplorare
         for (Integer node : bfsAlbero.getNeighbors(sorg)) {
             path.add(node);
-            System.out.println(">>> Nodo: " + node);
             cammminoMinimoImpl(bfsAlbero, node, dest, path, founded);
-            if (founded.contains(true)) {
+            if (founded[0]) {
                 break;
+            } else {
+                path.removeLast();
             }
         }
     }
@@ -189,16 +193,20 @@ public class BFS {
         //L'idea è quella di usare il BFS Albero, perché aciclico, ed in questo modo trovare il percorso.
 
         //Provo con la ricorsione
-        //Implementazione sbagliata, ma l'idea credo sia giusta
+
+        if (sorgente == destinazione) {
+            return null;
+        }
 
         DirectedGraph bfsAlbero = bfsTreeDirected(sorgente);
         ArrayList<Integer> returnArray = new ArrayList<>();
-        ArrayList<Boolean> founded = new ArrayList<>();
+        boolean[] founded = new boolean[1];
 
-        System.out.println(bfsAlbero);
 
         cammminoMinimoImpl(bfsAlbero, sorgente, destinazione, returnArray, founded);
-        returnArray.addFirst(sorgente);
+        if (!returnArray.isEmpty()) {
+            returnArray.addFirst(sorgente);
+        }
         return returnArray;
     }
 }
diff --git a/Algoritmi_2/Laboratorio/Lab2/src/Main.java b/Algoritmi_2/Laboratorio/Lab2/src/Main.java
index 5b21021c85bc1763564ab38949e46e1bb1cec5cb..cf2b97b5981a372c5cd7bd9b6d803ac457987e93 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("10; 0 1; 1 2; 1 5; 1 4; 2 4; 2 3; 2 4; 3 9; 5 7; 7 6"); //Num Nodi + Archi
+        Graph mioGrafo = new UndirectedGraph("10; 0 1; 1 2; 2 3; 3 4; 4 5; 5 6; 6 7; 7 8; 8 9; 9 0; 0 2; 2 4; 4 6; 6 8; 8 0;"); //Num Nodi + Archi
         BFS mioBFS = new BFS(mioGrafo);
         int source = 0;
-        int destination = 6;
+        int destination = 4;
 
         System.out.println(">>> Sorgente delle Operazione: " + source);
         System.out.println(">>> Destinazione delle Operazione: " + destination);