浅析连通分量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])
posted @ 2020-04-26 22:28  Daybreaking  阅读(158)  评论(0编辑  收藏  举报