《算法设计手册》有向图找环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
相关产品推荐
相关产品推荐

