什么是 Tarjan
查看原帖
什么是 Tarjan
482610
Mortidesperatslav楼主2024/2/25 20:49

为什么这样写不对,什么写法才是正确的?

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;
		}
	}
}
2024/2/25 20:49
加载中...