学习tarjan的时候发现一个疑问,当当前节点发现以前在栈中的节点时,大多写法是low[u] = min(low[u], dfn[v]);但为什么不能写成low[u] = min(low[u], low[v]);两种写法都能AC,向dalao请教下有什么区别?
for (register int edge = A.p[u]; edge > 0; edge = A.e[edge].nt) {
int v = A.e[edge].b;
if (dfn[v] == 0) {
tarjan(v); low[u] = min(low[u], low[v]);
}
else if (vis[v] == 1) low[u] = min(low[u], low[v]);//此处
}