查找无向图中的所有循环

时间:2016-11-11 16:40:58

标签: algorithm graph-algorithm depth-first-search breadth-first-search

我发现了一个关于如何在无向图中找到循环的问题。解决问题的方法是

bool dfs(int x)
{
    state[x] = 1;
    for(int j = 0; j < ls[x].size(); j++)
    {
        if(state[ls[x][j]] == 1 and parent[x] != ls[x][j])
        {
            if(t)
            {
                printf("Cycle entry: %d\n", ls[x][j]);
                printf("Cycle contains: %d, %d ", ls[x][j], x);
                int cycleNode = parent[x];
                while(cycleNode != ls[x][j])
                {
                    printf("%d ", cycleNode);
                    cycleNode = parent[cycleNode];
                }
            }
            t = 0;
            return t;
        }
        if(state[ls[x][j]] == 0)
        {
            parent[ls[x][j]] = x;
            dfs(ls[x][j]);
        }
    }
}

我想做什么我修改它以找到图中所有的循环,而不是像上面的DFS那样。有没有办法做到这一点?

0 个答案:

没有答案