- class ['a, 'b] graph (edge_list: ('a * 'b) list) =
- let adjacency_list = Hashtbl.create (List.length edge_list) in
- let () =
- List.iter (fun (u, v) ->
- try
- (* it exists *)
- let nodes = Hashtbl.find adjacency_list u in
- Hashtbl.replace adjacency_list u (v :: nodes)
- with Not_found ->
- (* init the u -> v *)
- Hashtbl.add adjacency_list u [v]
- ) edge_list
- in
- object
- (* Create an adjacency list of at least "edge_list" size *)
- val adjacency_list = adjacency_list
- method aj = adjacency_list
- end