diff --git a/slides/cours_26.md b/slides/cours_26.md
index 490d6f323f5bc94b8b0fd4020839ad5177ffadab..58886e19b59e0a6c809c2615b52c798ee5ef6b5d 100644
--- a/slides/cours_26.md
+++ b/slides/cours_26.md
@@ -550,4 +550,292 @@ $$
 
 ## Appliquer l'algorithme de Floyd--Warshall au graphe suivant
 
-![The exorcist.](figs/floyd_exercice.png)
+![The exorcist.](figs/floyd_exercice.png){width=50%}
+
+* Bien indiquer l'état de $D$ et $P$ à chaque étape!
+* Ne pas oublier de faire la matrice d'adjacence évidemment...
+
+# La suite
+
+* Sans transition.... la suite!
+
+# Trouver un réseau électrique pour
+
+![Ces maisons n'ont pas d'électricité.](figs/arbre_couvrant_vide.png)
+
+# Solution: pas optimale
+
+![Le réseau simple, mais nul.](figs/arbre_couvrant_mal.png)
+
+* La longueur totale des câbles est super longue!
+
+# Solution: optimale
+
+![Le meilleur réseau.](figs/arbre_couvrant_bien.png)
+
+# Formalisation: Les arbres couvrants
+
+## Application: minimisation des coûrs
+
+* Équipement d'un lotissement avec des lignes électriques/téléphoniques, des canalisations, ...
+
+. . .
+
+* Pour réduire les coûts, on cherche à minimiser la longueur totale des câbles/tuyaux.
+
+. . .
+
+* Les lignes/tuyaux forment un *arbre couvrant*.
+
+. . .
+
+* La meilleure option est un *arbre couvrant minimal*.
+
+
+# Formalisation: Les arbres couvrants
+
+* Qu'est-ce qu'un arbre couvrant? Des idées? De quel objet on part? Où va-t-on?
+
+. . .
+
+* Un arbre couvrant d'un graphe non-orienté et connexe est:
+    * un arbre inclu dans le graphe qui connecte tous les sommets du graphe.
+
+. . .
+
+![Exemple d'arbres couvrants d'un graphe connexe.](figs/arbre_couvrant_exemples.png)
+
+# Arbres couvrants
+
+* Quels algorithmes que nous avons déjà vus permettent de construire des arbres couvrants?
+
+. . .
+
+* Les parcours en largeur et en profondeur!
+
+. . .
+
+![Graphe, et parcours comme arbres couvrants.](figs/arbres_couvrants_parcours.png)
+
+# Arbres couvrants minimaux
+
+* Un *arbre couvrant minimal* est un sous-graphe d'un graphe non-orienté pondéré $G(V,E)$, tel quel:
+    * C'est un arbre (graphe acyclique);
+    * Il couvre tous les sommets de $G$ et contient $|V|-1$ arêtes de $G$;
+    * Le coût total associé aux arêtes de l'arbre est minimum parmi tous les arbres couvrants possibles.
+
+. . .
+
+* Est-il unique?
+
+. . .
+
+* Pas dorcément.
+
+# Arbres couvrants minimaux
+
+* Comment générer un arbre couvrant minimal?
+
+![Un graphe, connexe, non-orienté, pondéré, et son arbre couvrant minimal.](figs/arbre_couvrant_minimal_exemple.png)
+
+# Algorithme de Prim
+
+::: columns
+
+:::: column
+
+## Un exemple
+
+![Le graphe de départ.](figs/prim_0.png)
+
+::::
+
+:::: column
+
+## On part de `e` (au hasard)
+
+![Le sommet `e` est couvert.](figs/prim_1.png)
+
+::::
+
+:::
+
+# Algorithme de Prim
+
+::: columns
+
+:::: column
+
+## On choisit comment? 
+
+![Quelle arête choisir?](figs/prim_1.png)
+
+. . .
+
+* L'arête la plus courte sortant d'un sommet déjà visité, et entrant dans un sommet non-visité.
+
+::::
+
+:::: column
+
+. . .
+
+## L'arête `e->d`
+
+![Le sommet `d` est couvert.](figs/prim_2.png)
+
+::::
+
+:::
+
+# Algorithme de Prim
+
+::: columns
+
+:::: column
+
+## On choisit comment? 
+
+![Quelle arête choisir?](figs/prim_2.png)
+
+. . .
+
+* L'arête la plus courte sortant d'un sommet déjà visité, et entrant dans un sommet non-visité.
+
+::::
+
+:::: column
+
+. . .
+
+## L'arête `d->a`
+
+![Le sommet `a` est couvert.](figs/prim_3.png)
+
+::::
+
+:::
+
+# Algorithme de Prim
+
+::: columns
+
+:::: column
+
+## On choisit comment? 
+
+![Quelle arête choisir?](figs/prim_3.png)
+
+. . .
+
+* L'arête la plus courte sortant d'un sommet déjà visité, et entrant dans un sommet non-visité.
+
+::::
+
+:::: column
+
+. . .
+
+## L'arête `d->c`
+
+![Le sommet `c` est couvert.](figs/prim_4.png)
+
+::::
+
+:::
+
+# Algorithme de Prim
+
+::: columns
+
+:::: column
+
+## On choisit comment? 
+
+![Quelle arête choisir?](figs/prim_4.png)
+
+. . .
+
+* L'arête la plus courte sortant d'un sommet déjà visité, et entrant dans un sommet non-visité.
+
+::::
+
+:::: column
+
+. . .
+
+## L'arête `e->b`
+
+![Le sommet `b` est couvert.](figs/prim_5.png)
+
+::::
+
+:::
+
+* Game over!
+
+# Algorithme de Prim
+
+## Structures de données
+
+* Dans quoi allons nous stocker les sommets?
+
+. . .
+
+* File de priorité min.
+* Autre chose?
+
+. . .
+
+* Tableau des distances (comme pour Dijkstra).
+* Autre chose?
+
+. . .
+
+* Tableau des parents (presque comme pour Dijkstra).
+* Autre chose?
+
+. . .
+
+* Non.
+
+# Algorithme de Prim
+
+## Initialisation: Pseudo-code (2min)
+
+. . .
+
+```C
+file_priorité, distance, parent initalisation(graphe)
+    r = aléatoire(graphe)
+    distance[r] = 0
+    parent[r] = indéfini
+    fp = file_p_vide()
+    pour v dans sommets(graphe)
+        si v != r
+            distance[v] = infini
+            parent[v]   = indéfini
+        fp = enfiler(fp, v, distance[v])
+    retourne fp, distance, parent
+```
+
+# Algorithme de Prim
+
+## Algorithme: Pseudo-code (5min)
+
+. . .
+
+```C
+sommets, parent initalisation(file_priorité, distance, parent)
+    sommets = vide
+    tant que !est_vide(file_priorité)
+        u, fp = défiler(file_priorité)
+        sommets = insérer(sommets, u)
+        pour v dans voisinage de u et pas dans sommets // ou dans file_priorité
+            si w(u, v) < distance[v]
+                parent[w] = u
+                distance[w] = w(u, v)
+                fp = changer_priorité(fp, w, w(u, v))
+    retourne sommets, parent
+```
+
diff --git a/slides/figs/arbre_couvrant_bien.png b/slides/figs/arbre_couvrant_bien.png
new file mode 100644
index 0000000000000000000000000000000000000000..ddd64ea22b85bfaa2a47797204347439db083d71
Binary files /dev/null and b/slides/figs/arbre_couvrant_bien.png differ
diff --git a/slides/figs/arbre_couvrant_exemples.png b/slides/figs/arbre_couvrant_exemples.png
new file mode 100644
index 0000000000000000000000000000000000000000..511b08aa671d07a0ffa25a4fe3d602aa4fc06f4c
Binary files /dev/null and b/slides/figs/arbre_couvrant_exemples.png differ
diff --git a/slides/figs/arbre_couvrant_mal.png b/slides/figs/arbre_couvrant_mal.png
new file mode 100644
index 0000000000000000000000000000000000000000..7c4cd6f375d73ab335ff4509836508bbf9c91360
Binary files /dev/null and b/slides/figs/arbre_couvrant_mal.png differ
diff --git a/slides/figs/arbre_couvrant_minimal_exemple.png b/slides/figs/arbre_couvrant_minimal_exemple.png
new file mode 100644
index 0000000000000000000000000000000000000000..0705ed97e9cc959bcd4abff6216ee02c588b78d7
Binary files /dev/null and b/slides/figs/arbre_couvrant_minimal_exemple.png differ
diff --git a/slides/figs/arbre_couvrant_vide.png b/slides/figs/arbre_couvrant_vide.png
new file mode 100644
index 0000000000000000000000000000000000000000..ecc8eb81bcddea0ad9e7c2e7eae8f8e2b12f7fc6
Binary files /dev/null and b/slides/figs/arbre_couvrant_vide.png differ
diff --git a/slides/figs/arbres_couvrants_parcours.png b/slides/figs/arbres_couvrants_parcours.png
new file mode 100644
index 0000000000000000000000000000000000000000..7324b3f570db6feaa590f229a0b9ac3b63c2e935
Binary files /dev/null and b/slides/figs/arbres_couvrants_parcours.png differ
diff --git a/slides/figs/prim_0.png b/slides/figs/prim_0.png
new file mode 100644
index 0000000000000000000000000000000000000000..dbc6df146f83883c9aefee870fd1a4bba4164468
Binary files /dev/null and b/slides/figs/prim_0.png differ
diff --git a/slides/figs/prim_1.png b/slides/figs/prim_1.png
new file mode 100644
index 0000000000000000000000000000000000000000..a85adb5e4f338e67f97d89c184fe8ff4e8ab2b19
Binary files /dev/null and b/slides/figs/prim_1.png differ
diff --git a/slides/figs/prim_2.png b/slides/figs/prim_2.png
new file mode 100644
index 0000000000000000000000000000000000000000..81afadd299dd18af4f3ca722ccfa5e054e5380e6
Binary files /dev/null and b/slides/figs/prim_2.png differ
diff --git a/slides/figs/prim_3.png b/slides/figs/prim_3.png
new file mode 100644
index 0000000000000000000000000000000000000000..d0ad120e879c247aff68a15c8bbb546d8c6fe631
Binary files /dev/null and b/slides/figs/prim_3.png differ
diff --git a/slides/figs/prim_4.png b/slides/figs/prim_4.png
new file mode 100644
index 0000000000000000000000000000000000000000..11aff386e69ee36435ef30c68040c8b80080cc55
Binary files /dev/null and b/slides/figs/prim_4.png differ
diff --git a/slides/figs/prim_5.png b/slides/figs/prim_5.png
new file mode 100644
index 0000000000000000000000000000000000000000..babfe24819fb5b7d0a82ed5f8e3b49cddc5a93eb
Binary files /dev/null and b/slides/figs/prim_5.png differ