有一个小问题
查看原帖
有一个小问题
50925
EternalEpic楼主2020/12/2 07:50

我有一个问题啊,为啥这道题Tarjan时遇到父亲要直接continue啊?

inline void Tarjan(int u, int fa) {
	dfn[u] = low[u] = ++timer;
	for (int i = head[u]; i; i = nxt[i]) {
		if (ver[i] == fa) continue; //就是这步
		if (!dfn[ver[i]]) {
			F[ver[i]][0] = u;
			b[ver[i]] = edge[i];
			Tarjan(ver[i], u);
			chkmin(low[u], low[ver[i]]);
		} else chkmin(low[u], dfn[ver[i]]);
		if (dfn[u] >= low[ver[i]]) continue;
		Add(u, ver[i], edge[i]);
	}
	
	for (int i = head[u]; i; i = nxt[i]) {
		if (F[ver[i]][0] == u || dfn[ver[i]] <= dfn[u]) continue;
		build(u, ver[i], edge[i]);
	}
}

2020/12/2 07:50
加载中...