* that it don't appear in the edge lists of the nodes.
*/
ARR_APP1(pbqp_edge *, src_node->edges, edge);
- edge->src = src_index;
+ edge->src = src_node;
ARR_APP1(pbqp_edge *, tgt_node->edges, edge);
- edge->tgt = tgt_index;
+ edge->tgt = tgt_node;
+ edge->bucket_index = UINT_MAX;
return edge;
}
-void delete_edge(pbqp *pbqp, pbqp_edge *edge)
+void delete_edge(pbqp_edge *edge)
{
pbqp_node *src_node;
pbqp_node *tgt_node;
assert(edge);
- src_node = get_node(pbqp, edge->src);
- tgt_node = get_node(pbqp, edge->tgt);
+ src_node = edge->src;
+ tgt_node = edge->tgt;
assert(src_node);
assert(tgt_node);
disconnect_edge(src_node, edge);
disconnect_edge(tgt_node, edge);
}
+
+pbqp_edge *pbqp_edge_deep_copy(pbqp *pbqp, pbqp_edge *edge)
+{
+ return alloc_edge(pbqp, edge->src->index, edge->tgt->index, edge->costs);
+}