繁体   English   中英

图形循环中的节点数

[英]Number of Nodes in a Cycle of a graph

我试图找到图形循环中的节点数。 我使用递归和DFS来计算图形的所有周期中的节点数。这是C ++中的计算函数。

int iscyclic(int node,bool visited[],bool rec[],vector<int>g[])
{
    if(!visited[node])
{
    visited[node] = true;
    rec[node] = true;
    vector<int>::iterator it;
    for(it=g[node].begin();it!=g[node].end();it++)
    {
        if(!visited[*it] && iscyclic(*it,visited,rec,g))
        {
            kount++;
        }
        else if(rec[*it])
            kount++;
    }
}
rec[node] = false;
return kount;
}

Visitedrec数组默认设置为false, kount全局设置为0 kount应该计算有向图循环中的节点数。但是有些情况下答案是错误的。 请帮忙。我最近开始学习图论。

你不应该这样做:

else if(rec[*it])
   kount++;

此外,您需要确保起始节点(您调用函数的节点)实际上是循环的一部分。

第三件事 - 你根据你的函数返回kcount ,当你最终应该根据你是否在这个分支中遇到一个循环的事实返回truefalse

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM