从递归调用中接收更新的值

时间:2019-03-22 14:59:41

标签: c++ algorithm recursion

我有一个DFS功能,该功能收集顶点的 entry leave 次。不幸的是,我无法在 leave 时间内收到正确的值,因为它与递归调用中的值没有联系。

void DFS_visit(int i, vector<int> Adj[], int visited[], int p[], int entry[], int leave[], int t)
{
    visited[i] = 1;
    entry[i] = t;
    cout << i << " ";
    for (auto u : Adj[i])
    {
        if (!visited[u])
        {
            p[u] = i;
            DFS_visit(u, Adj, visited, p, entry, leave, t++);
        }
    }
    leave[i] = t++;
}

它显然是辅助功能,我也有一个“主要” DFS功能:

void DFS(vector<int> Adj[], int n)
{
    int visited[n], p[n], entry[n], leave[n];
    int t = 0;

    for (int i = 0; i < n; i++)
    {
        visited[i] = 0;
        p[i] = -1;
    }

    for (int i = 0; i < n; i++)
    {
        if (!visited[i])
        {
            DFS_visit(i, Adj, visited, p, entry, leave, t);
        }
    }

能否请您告诉我我应该如何使用离开的更新值离开[i]?预先感谢!

0 个答案:

没有答案