从邻接表中删除边

时间:2018-10-01 00:34:09

标签: c++ graph

我使用邻接表实现了一个图,我现在正在尝试实现removeEdge函数。我能够使用邻接矩阵来做到这一点,但是这让我有些困惑。

到目前为止,这是我所拥有的,但是擦除部分是错误的,因此只需要一些操作上的帮助即可。

Map<K, AugmValue<V, M>>

如果有什么建议,我将不胜感激。

1 个答案:

答案 0 :(得分:4)

使用iterator查找要删除的元素。之后,使用erase方法将其删除。

void removeEdge(int u, int v) {
   // remove edge from u to v
   vector<int>::iterator it  = std::find(adv[u].begin(), adv[u].end(), v);
   adv[u].erase(it);
   // remove edge from v to u
   it  = std::find(adv[v].begin(), adv[v].end(), u);
   adv[v].erase(it);
}