在一个图里找是否存在环,采用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/HNYLMSTea/p/10498458.html
时间: 2024-10-17 05:09:15