【发布时间】:2019-05-26 19:15:08
【问题描述】:
我的代码可以正常工作,但不适用于所有测试用例。
我在这里要做的是创建一个“布尔 ifparent 数组”,它保存我正在遍历的路径的记录。
“布尔访问数组”记录所有访问过的顶点。
我正在为 DFS 使用堆栈。
//v is no of vertex, adj[] is the adjacency matrix
bool isCyclic(int v, vector<int> adj[])
{
stack<int> st;
st.push(0);
vector<bool> visited(v, false);
vector<bool> ifparent(v, false);
int flag= 0;
int s;
while(!st.empty()){
s= st.top();
ifparent[s]= true;
visited[s]=true;
flag=0;
for(auto i: adj[s]){
if(visited[i]){
if(ifparent[i])
return true;
}
else if(!flag){
st.push(i);
flag= 1;
}
}
if(!flag){
ifparent[s]= false;
st.pop();
}
}
return false;
}
【问题讨论】:
-
哪些情况不起作用?对于这些情况,实际结果是什么,预期结果是什么?
-
@JaMiT link 这是问题的链接。
-
问题应该是独立的,不依赖外部链接获取关键信息。请编辑问题以说明哪些情况不起作用,这些情况下的实际结果是什么,以及这些情况下的预期结果是什么。
标签: c++ algorithm graph-theory depth-first-search