You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

《算法设计手册》有向图找环DFS算法实现问题咨询

有向图DFS找环算法误判问题

我按照《算法设计手册》实现了有向图找环的DFS算法,但在测试示例中出现误判,错误判定图中存在环。具体问题出在遍历边2→3时,此时parent[3]=1且不等于2,算法直接返回true判定存在环。

实现代码

bool directed = true;

bool dfs(int v, 
vector<vector<int>>& adjList,
vector<bool>& discovered,
vector<bool>& processed,
vector<int>& parent)
{     
    bool ans = false;
    discovered[v] = true;

    for(auto x : adjList[v])
    {
        if(!discovered[x])
        {
            parent[x] = v;  
            ans |= dfs(x, adjList, discovered, processed, parent);
        }
        else if((!processed[x] && parent[v]!=x) || directed)
        {
            if(parent[x]!=v)
            {
                return true;
            }
        }
    }

    processed[v] = true;
    return ans;
}

调用逻辑

for(int i = 0; i < n; ++i)
{
    if(!discovered[i])
    {
        dfs(i, adjList, discovered, processed, parent);
            
    }
}

测试示例图

测试示例图

请问该算法是否存在问题?


内容的提问来源于stack exchange,提问作者user123456

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 21:12:39