c++ - 加权有向图

标签 c++ graph directed-graph

我正在尝试在加权有向图(上实现递归深度优先遍历(,但似乎我的输出总是关闭的。就像这样,我对节点进行了额外的访问。这就是我目前正在使用的:

void Dfs( int u, vector<bool> visited, vector < char > label, vector < vector < int > > adj)
{
visited[u] = true;
cout << label[u];

for ( int i = 0; i < (signed)visited.size(); i++)
    {
    if (visited[i] != true && adj[u][i] != 0)
            {
            cout << "->";
            Dfs( i, visited, label, adj);
            }
    }

}

其中 label 是分配给顶点的字母(A = 0,等等...),visited 是一个 vector ,表示某个索引处的顶点是否已被访问,adj 是邻接矩阵。

假设我有一个图,正确的深度优先搜索是 A->D->B->C->E,我最终得到的是 A->D->B->C->E-> C->B->E。如果有帮助,对于此示例,邻接矩阵如下所示:

  |  A  B  C  D  E
--|---------------
A |  -  -  -  6  -
B |  -  -  8  3  2
C |  -  8  -  7  -
D |  6  3  7  -  -
E |  -  2  -  -  -

最佳答案

函数的参数是按值传递的;所以你的 visited vector 没有得到更新。此外,对其他 vector 使用按引用传递,以便每个递归调用都不会复制 vector 。

关于c++ - 加权有向图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10392765/

相关文章:

c++ - 从python3客户端向cpp服务器发送垃圾

c# - 将未知大小的结构数组从 c# 传递到 c++ dll 并返回

c++ - 获取函数的第一个输入类型

ios - Shinobi 图表条形图定制

algorithm - 如何找到一小组顶点,使得图中从起始节点到结束节点的所有路径都至少包含这些顶点中的一个

algorithm - 有向循环图或锦标赛中的双方淘汰赛(图表)

C++ 静态成员释放的控制顺序

c - 这里有人使用 make-cdf & stats.pl 程序吗?

python - Tarjan 在 python 中的强连接组件算法不起作用

php - MySQL 存储关系(家族)树