[代码小技巧]判环
在一个图里找是否存在环,采用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))
{
...
}