为什么这样写不对,什么写法才是正确的?
void tarjan(int u){
dfn[u] = low[u] = ++cnt;
s.push(u);
vis[u] = 1;
for (auto &v : G[u]){
if (!dfn[v]){
tarjan(v);
low[u] = min(low[u], low[v]);
}else if (!vis[v])
low[u] = min(low[u], dfn[v]);
}
if (dfn[u] == low[u]){
while (!s.empty()){
int v = s.top();
s.pop();
col[v] = u;
if (u == v)
break;
}
}
}