let components =
let save = ref None in
fun graph ->
match !save with
|None -> begin
let module C = Components.Make(G) in
let c = C.scc_array graph in
save := Some c ;
c
end
|Some c -> c