[代码小技巧]判环

在一个图里找是否存在环,采用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)) 
            {
                ...
            }

原文地址:https://www.cnblogs.com/cnyali-Tea/p/10498458.html