为什么是dfn而不是low
查看原帖
为什么是dfn而不是low
1336385
NoSignal_CN楼主2024/10/24 19:36

就是标注了114514的那行为什么不是cpp low[u] = min(low[u],low[v]);

void tarjan(int u,int fa) {
	int son = 0;
	dfn[u] = low[u] = ++cnt;
	for (int i = 0;i < g[u].size();i ++) {
		int v = g[u][i];
		if (!dfn[v]) {
			++ son;
			tarjan(v,u);
			low[u] = min(low[u],low[v]);
			if (low[v] >= dfn[u] && u != root) iscut[u] = true;
		} else if (v != fa) low[u] = min(low[u],dfn[v]);//-------------114514
	}
	if (u == root && son >= 2) iscut[u] = true;
	return;
}
2024/10/24 19:36
加载中...