void crear_arco(Grafo & g, int isrc, int itgt) { Grafo::Node * src = g.search_node(isrc); if (src == NULL) src = g.insert_node(isrc); Grafo::Node * tgt = g.search_node(itgt); if (tgt == NULL) tgt = g.insert_node(itgt); if (search_arc<Grafo>(g, src, tgt) != NULL) throw std::invalid_argument("Duplicated arc"); g.insert_arc(src, tgt); }
void insertar_arco(Grafo & grafo, const string & src_name, const string & tgt_name) { Grafo::Node * n1 = grafo.search_node(Nodo(src_name)); if (n1 == NULL) n1 = grafo.insert_node(src_name); Grafo::Node * n2 = grafo.search_node(Nodo(tgt_name)); if (n2 == NULL) n2 = grafo.insert_node(tgt_name); grafo.insert_arc(n1, n2); }