C/C++算法
万箭穿心殇
你是我,一生永不言说的美丽。
展开
-
最小生成树---Kruskal/Prime算法
图的存贮结构采用边集数组,且权值相等的边在数组中排列次序可以是任意的,对于边相对比较多的不是很实用,浪费时间.原创 2014-09-02 19:05:22 · 816 阅读 · 0 评论 -
最短路径---Dijkstra/Floyd算法
1.原创 2014-09-05 22:24:40 · 656 阅读 · 0 评论 -
Kosaraju算法---强联通分量
1、基础知识 所需结构:原图、反向图(若在原图中存在vi到vj的有向边,在反向图中就变成为vj到vi的有向边)、标记数组(标记是否遍历过)、一个栈(或记录顶点离开时间的数组)。 算法描叙: 步骤1:对原图进行深度优先遍历,记录每个顶点的离开时间。 步骤2:选择具有最晚离开时间的顶点,对反向图进行深度优先遍历,并标记能够遍历到的顶点,这些顶原创 2014-08-19 14:25:46 · 907 阅读 · 0 评论 -
点/边 双连通分量---Tarjan算法
1、点双连通分量 2、边双连通分量原创 2014-08-28 13:46:51 · 785 阅读 · 0 评论 -
Tarjan算法---强联通分量
1、基础知识 在有向图G,如果两个顶点间至少存在一条路径,称两个顶点强连通(strongly connected)。如果有向图G的每两个顶点都强连通,称G是一个强连通图。非强连通图有向图的极大强连通子图,称为强连通分量(strongly connected components)。 下图中,子图{1,2,3,4}为一个强连通分量,因为顶点1,2,3,4两两可达。{5},{6}原创 2014-08-19 11:37:17 · 543 阅读 · 0 评论 -
SCC重新建图
在通过求出原创 2014-08-28 18:13:05 · 703 阅读 · 0 评论 -
半连通分量--Tarjan/Kosaraju算法
一个有向图称为半连通的(Semi-Connected),如果满足: 即对于图中任意两点u,v,存在一条u到v的有向路径或者从v到u的有向路径。 若满足,则称G’是G的一个导出子图。 若G’是G的导出子图,且G’半连通,则称G’为G的半连通子图。 若G’是G所有半连通子图中包含节点数最多的,则称G’是G的最大半连通子图。原创 2014-08-28 16:53:35 · 1515 阅读 · 0 评论 -
割点和桥---Tarjan算法
使用Tarjan算法求解图的割点和桥。原创 2014-08-28 11:45:48 · 1104 阅读 · 0 评论 -
LCA---Tarjan算法
本问题中Tarjan算法不需要设置栈和dfn,low标号,而是设置了并查集。原创 2014-08-29 13:23:01 · 639 阅读 · 0 评论