diff --git a/src/main.ml b/src/main.ml
index a866a018c08e6c73d22068674e398415933f8875..ce54a3889e23107ec6dc2aa2e601edda1e63ef65 100644
--- a/src/main.ml
+++ b/src/main.ml
@@ -93,26 +93,40 @@ let rec chemins s g  =
         List.map (fun b -> if (List.mem s b) then b else s::b) titi
     else [[s]]
 
+
+
 (* 
- * [plus_court_chemin l] renvoie la liste des plus courts chemins de la liste de chemins l
+ * [plus_court_chemin s p c] renvoie la liste des plus courts chemins de s à p de la liste de chemins c
  *)
-let plus_courts_chemins c = 
-    let distances = List.map (fun a -> List.length a) c
+let plus_courts_chemins s p c = 
+    let rec filtre f t nl = match nl with
+        | [] -> []
+        | elt::ma -> if (List.nth elt 0) = f && (List.nth elt ((List.length elt)-1)) = t then elt::(filtre f t ma) else (filtre f t ma)
     in
-    let minimum = List.fold_left (fun a b -> if (a<b) then a else b) (List.nth distances 0) distances in
-    print_int minimum ; 
-    let rec remplissage l d = match l, d with
+    let rec remplissage l d min = match l, d with
         | [], _ -> []
-        | e::m, a::dm -> if a = minimum then (e::(remplissage m dm)) else (remplissage m dm)
+        | e::m, a::dm -> if a = min then (e::(remplissage m dm min)) else (remplissage m dm min)
         | _ -> failwith("erreur")
     in
-    remplissage c distances
+    let liste = filtre s p c 
+    in
+    let distances = List.map (fun a -> List.length a) liste
+    in
+    let minimum = List.fold_left (fun a b -> if (a<b) then a else b) (List.nth distances 0) distances
+    in
+    remplissage liste distances minimum
 
-(* TODO : ne pas oublier de supprimer les chemins qui n'arrive pas à puits*)
+(* TODO : ne pas oublier de supprimer les chemins qui n'arrive pas à puits *)
 
 (* test du dénombrement de l'ensemble des chemins possibles *)
 let _ = 
-    Printf.printf "Chemins possibles : \n" ;
+    Printf.printf "Chemins les plus courts : \n" ;
     let f l = Printf.printf "%s\n" (String.concat " " l)
     in 
-    List.map f (plus_courts_chemins (chemins source (make_graphe (int_of_string n))))
+    let graphe_test = make_graphe (int_of_string n)
+    in
+    let liste_chemins = chemins source graphe_test
+    in
+    let liste_result = plus_courts_chemins source puits liste_chemins
+    in
+    List.map f liste_result