03 2013 档案

摘要:http://acm.hdu.edu.cn/showproblem.php?pid=1269View Code 1 void tarjan(int x) 2 { 3 int i, a; 4 low[x] = dfn[x] = index; // 刚搜到一个节点时low = dfn 5 index++; 6 stack[++head] = x; // 将该节点入栈 7 instack[x] = 1; // 将入栈标记设置为1 8 for(i = 1; i <= n; i++) // 遍历入栈节点的边 9 { 10 ... 阅读全文
posted @ 2013-03-09 16:29 另Ⅰ中Feel▂ 阅读(336) 评论(0) 推荐(0) 编辑
摘要:[有向图强连通分量]在有向图G中,如果两个顶点间至少存在一条路径,称两个顶点强连通(strongly connected)。如果有向图G的每两个顶点都强连通,称G是一个强连通图。非强连通图有向图的极大强连通子图,称为强连通分量(strongly connected components)。下图中,子图{1,2,3,4}为一个强连通分量,因为顶点1,2,3,4两两可达。{5},{6}也分别是两个强连通分量。直接根据定义,用双向遍历取交集的方法求强连通分量,时间复杂度为O(N^2+M)。更好的方法是Kosaraju算法或Tarjan算法,两者的时间复杂度都是O(N+M)。本文介绍的是Tarjan算 阅读全文
posted @ 2013-03-09 16:27 另Ⅰ中Feel▂ 阅读(177) 评论(0) 推荐(0) 编辑