【发布时间】:2011-07-26 11:52:05
【问题描述】:
我想知道用 c++ 快速编写图形的实现。我需要数据结构易于操作和使用图算法(例如 BFS、DFS、Kruskal、Dijkstra ......)。 我需要这个算法实现奥林匹克竞赛,所以数据结构越容易编写越好。
你能推荐这样的 DS(主要结构或类以及它们中的内容)。我知道邻接列表和邻接矩阵是主要的可能性,但我的意思是更详细的代码示例。
例如,我上次必须为 DFS 实现图表时想到了这个 DS:
struct Edge {
int start;
int end;
struct Edge* nextEdge;
}
然后使用大小为 n 的数组,在其第 i 个位置包含表示从第 i 个节点开始的边的边列表(struct Edge)。
但是当试图在这个图上进行 DFS 时,我必须编写一个 50 行代码,其中包含大约 10 个 while 循环。
有哪些“好的”实现?
【问题讨论】:
-
C 或 C++,二选一;没有 C/C++。我会说 Boost。
-
不确定您在这里要求什么?你能详细说明一下吗?
-
@The GIG:因为实现的结构可能会完全不同,因为 C 和 C++ 有不同的抽象和习语。
-
更具体地说,您是要我们为您写这个吗?
-
那么您需要高效的东西吗?在什么方面以及用于什么用例?邻接矩阵非常有效,例如你正在处理complete graphs...