加权有向图

时间:2012-05-01 02:16:12

标签: 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是分配给verticies的字母(A = 0等等),visit是保存某个索引处的顶点是否已被访问的向量,adj是邻接矩阵。

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

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

1 个答案:

答案 0 :(得分:3)

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