OCaml (option informatique) · Chapitre 15 · Exercice de TD
Composantes connexes
Parcours de graphes · niveau 2
Énoncé
Écrire nb_composantes adj.
Corrigé
let nb_composantes adj =
let n = Array.length adj in
let vu = Array.make n false in
let rec visite s =
if not vu.(s) then begin vu.(s) <- true; List.iter visite adj.(s) end
in
let c = ref 0 in
for s = 0 to n - 1 do
if not vu.(s) then begin c := !c + 1; visite s end
done;
!c
Chaque sommet encore non vu lance un parcours qui marque toute sa composante ; on en compte ainsi le nombre. Un graphe connexe a une seule composante.
Exercices semblables
- Distances depuis un sommet corrigé
- Deux sommets sont-ils reliés ? corrigé
- Détecter un cycle corrigé
- Graphe biparti corrigé
- Plus court chemin (reconstruit) corrigé