16 rivejä
No EOL
362 B
OCaml
16 rivejä
No EOL
362 B
OCaml
open Graph
|
|
|
|
|
|
let rec clone_nodes gr =
|
|
n_fold gr (fun g id -> new_node g id) empty_graph
|
|
|
|
let gmap gr f =
|
|
e_fold gr (
|
|
fun g id_s id_d cost -> new_arc g id_s id_d (f cost)
|
|
) (clone_nodes gr)
|
|
|
|
let add_arc gr id1 id2 n =
|
|
let lbl = find_arc gr id1 id2 in
|
|
match lbl with
|
|
| None -> new_arc gr id1 id2 n
|
|
| Some cost -> new_arc gr id1 id2 (n + cost) |