摘要:
Tarjan算法(有向图强连通分量问题)转载自:http://www.byvoid.com/blog/scc-tarjan/zh-hans/[有向图强连通分量]在有向图G中,如果两个顶点间至少存在一条路径,称两个顶点强连通(strongly connected)。如果有向图G的每两个顶点都强连通,称G是一个强连通图。非强连通图有向图的极大强连通子图,称为强连通分量(strongly connected components)。下图中,子图{1,2,3,4}为一个强连通分量,因为顶点1,2,3,4两两可达。{5},{6}也分别是两个强连通分量。直接根据定义,用双向遍历取交集的方法求强连通分量,时 阅读全文
摘要:
做了一些树形DP实在不想做了看到von在玩tarjan算法,好像放假之前看过关于rmq 以及tarjan算法的说明只是没具体弄明白。今天看了一下von分享的资料不错。找了一个模板题就当tarjan算法的模板吧http://acm.hdu.edu.cn/showproblem.php?pid=1269判断是否为强连通图 bcnt == 1只有一个强连通分量且为自己 bcnt >1 存在多个强连通分量View Code #include <cstdio>#include <iostream>#include <cstring>#include <ve 阅读全文
摘要:
2、 RMQ算法(转载)对于该问题,最容易想到的解决方案是遍历,复杂度是O(n)。但当数据量非常大且查询很频繁时,该算法也许会存在问题。本节介绍了一种比较高效的在线算法(ST算法)解决这个问题。所谓在线算法,是指用户每输入一个查询便马上处理一个查询。该算法一般用较长的时间做预处理,待信息充足以后便可以用较少的时间回答每个查询。ST(Sparse Table)算法是一个非常有名的在线处理RMQ问题的算法,它可以在O(nlogn)时间内进行预处理,然后在O(1)时间内回答每个查询。首先是预处理,用动态规划(DP)解决。设A[i]是要求区间最值的数列,F[i, j]表示从第i个数起连续2^j个数中的 阅读全文