【发布时间】:2016-08-15 17:17:44
【问题描述】:
我正在用 C++ 构建一个图形作为整数向量的向量
vector<vector<int> > graph;
我的问题是:
-
图形是双向的,也就是说
if G[u] contains v, G[v] contains u -
我需要能够
remove any element v from G[u] remove u from G[v]在恒定时间内。
而且这个删除操作是我要重复很多次的操作,所以单个映射不起作用,因为当我删除一个元素时,其他元素会返回一个索引。
我想删除一条边(例如 G[u] 的最后一个索引,所以我可以使用 pop_back 并得到 O(1) ),然后删除另一个顶点的邻接向量中的相应边(由于这不是我正在编写的算法的主要问题,而且算法必须在线性时间内运行,我认为必须有一种方法可以使这些操作保持不变)。
【问题讨论】:
标签: c++ data-structures graph