【发布时间】:2020-10-16 08:29:26
【问题描述】:
在C++中实现图的邻接表表示的有效方法是什么?
- 向量 *edges;
- 列出*边;
- 地图
*edges; - map
> 边;
在我看来,它应该是选项 3 或 4,但我找不到任何使用它的缺点... 有吗?
有人可以帮我吗,这将是实现邻接表和竞争性编程的最有效方式吗?
【问题讨论】:
-
我建议vector
> adj_list 。例如 adj_list[1] 将表示与顶点 1 共享一条边的所有顶点。 -
@Aditya_U 选项 3 或 4 有什么问题,向量将花费 O(n) 时间来搜索顶点 u 和 v 之间是否存在边,但可以在非常短的时间内完成使用maps数据结构...如果我做edges[u],我会得到一个u所有相邻顶点的map,并且可以高效地执行操作...你对此有什么想说的吗?
标签: c++ graph adjacency-list coding-efficiency adjacency-list-model