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])