现在的位置: 首页 > 综合 > 正文

判断有向图中是否有环

2018年04月04日 ⁄ 综合 ⁄ 共 532字 ⁄ 字号 评论关闭
struct T
{
    int v,next;
}E[N*N];

struct TT
{
    int head;
}V[N];

bool used[N];

bool dfs(int u)
{
    if(used[u])
        return true;
    used[u] = true;
    for(int i=V[u].head;i!=NULL;i=E[i].next)
        if(dfs(E[i].v))
            return true;
    used[u] = false;
    return false;
}

int main()
{
    for(int i=1;i<=n;i++)
    {
        used[i] = true;
        for(int j=V[j].head;j!=NULL;j=E[j].next)
            if(dfs(E[j].u)); //Have circle
        used[i] = false;
    }
}

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

bool dfs(int u)
{
    vis[u] = true;
    inS[u] = true;
    for(int v=1;v<=n;v++)
        if(g[u][v])
        {
            if(inS[v] || !vis[v] && dfs(v))
                return true;
        }
    inS[u] = false;
    return false;
}
【上篇】
【下篇】

抱歉!评论已关闭.