摘要:
Tarjan或Kosaraju算法【对每个点归类belong】求出SCC之后,对num_scc个SCC重新建图,针对不同问题,考虑重边的问题。 阅读全文
摘要:
一个有向图称为半连通(Semi-Connected),满足:对于图中任两点u,v,存在一条u到v的有向路径或者从v到u的有向路径。 若满足,则称G’是G的一个导出子图。 若G’是G的导出子图,且G’半连通,则称G’为G的半连通子图。若G’是G所有半连通子图中包含节点数最多的,则称G’是G的最大半连通 阅读全文
摘要:
运用Tarjan算法,求解图的点/边双连通分量。 1、点双连通分量【块】 割点可以存在多个块中,每个块包含当前节点u,分量以边的形式输出比较有意义。 2、边双连通分量【缩点】 某一个点只能在一个“缩点”内,“缩点”时不包括当前节点u,分量以顶点的形式输出。 阅读全文
摘要:
使用Tarjan算法求解图的割点和桥。 1、割点 主要的算法结构就是DFS,一个点是割点,当且仅当以下两种情况: (1)该节点是根节点,且有两棵以上的子树; (2)该节点的任一子节点,没有到该节点祖先的反向边(就是说如果没有这个割点,那么这个子节点和那个祖先之间不连通); 2、桥 Tarjan算法求 阅读全文
摘要:
此处的链式与循环队列可以应用于BFS和树的层序遍历。下面是对其结构和基本操作的程序描述。 1、循环队列 解决循环队列的队空和队满的方法: [1].增加一个参数count,用来记录数组中当前元素的个数; [2].为避免队空和满两状态混淆,少用一个存储空间,也就是数组最后一个存数空间不用,(rear+1 阅读全文