繁体   English   中英

加权有向图

[英]Weighted 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是一个向量,该向量保存是否已访问某个索引处的顶点,而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不会更新。 另外,对其他向量使用“按引用传递”,以便每个递归调用都不会复制这些向量。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM