这个文章的思路是按照这里来的。这里讨论的都是无向图。应该有向图也差不多。

1.如何求割点

首先来看求割点。割点必须满足去掉其以后,图被分割。tarjan算法考虑了两个:

  • 根节点如果有两颗及以上子树,它就是割点。因为它没有父亲了(可怜的点)。

  • 对于有父亲的普通的结点a,如果它递归树的子树中,有任意节点b的low[b]>=dfn[a],那么它就是割点,反之则不是割点。

  如果\(low[b]>=dfn[a]\),a一定是割点。因为\(low[b]>=dfn[a]\)说明有在b这个子树中,里面所有点都互相搞来搞去,但是不能搞到a上面去,所以把a切断以后,这个子树就被隔离了。所以仅仅一个子树就可以让a成为割点。反之如果所有a的孩子b,都满足\(low[b]<low[a]\),那么a就不是割点。

2.如何求桥

桥也必须满足去掉其以后,图被分割。所以对于一条边(a, b),如果\(low[b]>=dfn[a]\),那他就是桥(不证了)。

还有一个low和dfn的问题:在tarjan求割点时,如果v在栈中,必须写成low[u]=min(low[u],dfn[v])。因为u可能被传送到了非树枝边到不了的地方。但是求强连通分量可以这样,因为它是有向图,如果它的祖宗能连到它,他又能连到他的祖宗,那么它的祖宗能连到的地方,他也能连到。同理无向图求割点就不能这样。

tarjan求割点割边的思考的更多相关文章

  1. 求割点 割边 Tarjan

    附上一般讲得不错的博客 https://blog.csdn.net/lw277232240/article/details/73251092 https://www.cnblogs.com/colle ...

  2. tarjan求割点与割边

    tarjan求割点与割边 洛谷P3388 [模板]割点(割顶) 割点 解题思路: 求割点和割点数量模版,对于(u,v)如果low[v]>=dfn[u]那么u为割点,特判根结点,若根结点子树有超过 ...

  3. poj_1144Network(tarjan求割点)

    poj_1144Network(tarjan求割点) 标签: tarjan 割点割边模板 题目链接 Network Time Limit: 1000MS Memory Limit: 10000K To ...

  4. Tarjan求割点和桥

    by szTom 前置知识 邻接表存储及遍历图 tarjan求强连通分量 割点 割点的定义 在一个无向图中,如果有一个顶点集合,删除这个顶点集合以及这个集合中所有顶点相关联的边以后,图的连通分量增多, ...

  5. UESTC 900 方老师炸弹 --Tarjan求割点及删点后连通分量数

    Tarjan算法. 1.若u为根,且度大于1,则为割点 2.若u不为根,如果low[v]>=dfn[u],则u为割点(出现重边时可能导致等号,要判重边) 3.若low[v]>dfn[u], ...

  6. POJ 1144 Network(Tarjan求割点)

    Network Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 12707   Accepted: 5835 Descript ...

  7. poj 1523 SPF(tarjan求割点)

    本文出自   http://blog.csdn.net/shuangde800 ------------------------------------------------------------ ...

  8. 洛谷P3388 【模板】割点(割顶)(tarjan求割点)

    题目背景 割点 题目描述 给出一个n个点,m条边的无向图,求图的割点. 输入输出格式 输入格式: 第一行输入n,m 下面m行每行输入x,y表示x到y有一条边 输出格式: 第一行输出割点个数 第二行按照 ...

  9. [POJ1144][BZOJ2730]tarjan求割点

    求割点 一种显然的n^2做法: 枚举每个点,去掉该点连出的边,然后判断整个图是否联通 用tarjan求割点: 分情况讨论 如果是root的话,其为割点当且仅当下方有两棵及以上的子树 其他情况 设当前节 ...

随机推荐

  1. ABAP 设置单元格颜色

    http://blog.163.com/ronanchen@126/blog/static/172254750201161811040488/ http://blog.csdn.net/lhx20/a ...

  2. CALL FUNCTION 'BAPI_PO_CREATE1' 相关报错

    *&---------------------------------------------------------------------**& Report  ZQJ06*&am ...

  3. Java for LeetCode 108 Convert Sorted Array to Binary Search Tree

    Given an array where elements are sorted in ascending order, convert it to a height balanced BST. 解题 ...

  4. swift中反向循环

    First of all, protocol extensions change how reverse is used: for i in (1...5).reverse() { print(i) ...

  5. jQuery/CSS3实现Android Dock效果

    在线演示 本地下载

  6. Spring Boot2.0之web开发

    1.关于静态资源的访问 在我们开发Web应用的时候,需要引用大量的js.css.图片等静态资源. Spring Boot默认提供静态资源目录位置需置于classpath下,目录名需符合如下规则: /s ...

  7. BZOJ 1609 [Usaco2008 Feb]Eating Together麻烦的聚餐:LIS & LDS (nlogn)

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1609 题意: 给你一个只由数字"1,2,3"组成的序列a[i],共n个 ...

  8. HDU 4336 Card Collector:状压 + 期望dp

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4336 题意: 有n种卡片(n <= 20). 对于每一包方便面,里面有卡片i的概率为p[i],可 ...

  9. codeforces 659E E. New Reform(图论)

    题目链接: E. New Reform time limit per test 1 second memory limit per test 256 megabytes input standard ...

  10. mysql数据库表分区详解(数量过大的数据库表通过分区提高查询速度)

    这篇文章主要介绍了MySQL的表分区,例如什么是表分区.为什么要对表进行分区.表分区的4种类型详解等,需要的朋友可以参考下 一.什么是表分区通俗地讲表分区是将一大表,根据条件分割成若干个小表.mysq ...