[代码小技巧]判环

在一个图里找是否存在环,采用tarjan的思想

bool FindCir(int u)
{
    if (instk[u]) return 1;
    if (vis[u]) return 0;
    vis[u] = instk[u] = 1;
    for (register int i = 0; i < g[u].size(); ++ i) 
        if (FindCir(g[u][i]))
            return 1;
    return instk[u] = 0;
}
    for (register int i = 1; i <= n; ++ i) 
        if (!vis[i]) 
            if (FindCir(i)) 
            {
                ...
            }

posted @ 2019-03-08 21:44  茶Tea  阅读(136)  评论(0编辑  收藏  举报