浅析连通分量low数组
2019-08-20 08:50:53 上午
-
dfn[] 数组代表的是时间戳,即结点访问的时间次序。不是结点所在的深度。
-
以其他的点作跳板,达到所能达到的时间戳最小的结点。这是没有意义的,因为只要把中间的任意一个结点删去,这条“桥”就相当于断了。应当看该结点只走一步所能达到的时间戳最小的结点
-
A - - > B - - > C
<- - <- -从C到B再到A,虽然B能到A,但是更新C时 low[C] = min(low[C], dfn[B]), min中不应该是low[B]使low[C] = low[B], 因为low[B] = dfn[A] , 也就是说C可以到达A,但是如果去掉B,C就不能到A。即
low[u] = min(low[u], dfn[v]);
-
A - - > B - - > C D
< - - - - - - - - -C能到D,D能到A。更新为C能到A,这是合理的,因为D是C的子树,判强联通分量时,他们是一个整体,割掉的是树根向外所连接的边,而不是树的内部,所以树内的点能到达的时间戳最小的点,树根也能到达。即
low[u] = min(low[u], low[v])