摘要: 看到多串匹配,好多人会想到合肥网络赛那道DNA repair,然后又会想到大名鼎鼎的AC自动机,但其实我想说的是Tire图。 有些人说Tire图和AC自动机其实就是同一样东西,有些人又认为不是。本菜可以确定的是Trie图是一个DFA,但对上面的疑问实在不敢作断论,原因是没看过关于自动机理论的书,所以对AC自动机这个词不清楚,但是Trie图是可以在MAIGO大牛的论文里找到明确定义的东东,从定义上看... 阅读全文
posted @ 2009-01-30 01:59 Beetlebum 阅读(605) 评论(0) 推荐(0) 编辑
摘要: 题意:给定一棵有n( n #include #include #include using namespace std; #define MAXN 200005 #define LOG 20 typedef pair PAIR; int order[MAXN],ecnt,dist[MAXN],first[MAXN],last[MAXN],n,q,st,p[MAXN],maxorder,... 阅读全文
posted @ 2009-01-24 11:59 Beetlebum 阅读(536) 评论(0) 推荐(0) 编辑
摘要: 无向图的缩点:1,求无割边子图 方法:求low[]及dfn[]后floodfill 题目:POJ3177 3352 2,求无割点子图(即子块,重连通分量) 方法:用栈实现,见下 题目:POJ2942 有向图的缩点: 1,求强连通分量 方法:Kosaraju & Tarjan 题目:POJ1236 2553 注意到一个点... 阅读全文
posted @ 2009-01-21 23:01 Beetlebum 阅读(411) 评论(0) 推荐(0) 编辑
摘要: Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->#include #include #include using namespace std; #define MAXN 1001 #define min(a,b) (a PAIR; int p... 阅读全文
posted @ 2009-01-21 22:42 Beetlebum 阅读(417) 评论(0) 推荐(0) 编辑
摘要: Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->#include using namespace std; #define MAXN 1001 #define min(a,b) (a<b?a:b) int p[MAXN],n,ecnt,m,dfn... 阅读全文
posted @ 2009-01-20 21:56 Beetlebum 阅读(262) 评论(0) 推荐(0) 编辑
摘要: 题意是给出一个连通无向图,求每次加一条边后,图内割边的数目。 最容易想到的方法是每加一条边都做一次DFS求割边,于是code之,提交,TLE。 然后上网搜了一下,看到了一个更直观的方法:设新加入的边为(u,v),先求u和v的LCA,看从LCA分别到u和v的路径上有多少条割边,然后从原图的割边数目上累减,结果就是所求,因为每加一条边,该边与DFS树上的边形成了环,环内的边就不再是割边了。这样只需要做... 阅读全文
posted @ 2009-01-20 12:27 Beetlebum 阅读(506) 评论(2) 推荐(0) 编辑
摘要: (1)求割点。割点距离各连通分支有一边距离(父子边),故使用#include using namespace std; #define MAXN 1001 #define Min(a,b)(a1)//DFS树的根r是割点的充要条件是:至少有2条以r为尾(从r出发)的父子边 cut[u]=true; //(2) //... 阅读全文
posted @ 2009-01-18 21:47 Beetlebum 阅读(479) 评论(3) 推荐(0) 编辑
摘要: 求强连通分量的基础题,用来练一下刚搞懂的Tarjan: Tarjan算法的过程就是不断避免把桥纳入强连通分量中 注意到以下性质: 1,桥一定是DFS树中的边 2,一条树边v-w为桥,当且仅当不存在回边将w的一个子孙与w的一个祖先相连 Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHi... 阅读全文
posted @ 2009-01-18 17:41 Beetlebum 阅读(507) 评论(0) 推荐(0) 编辑
摘要: CTRL+F使用之 图论 Graph Theory 定义与术语 Definition and Glossary 图与网络 Graph and Network 二元组称为图(graph).为结点(node)或顶点(vertex)集.为中结点之间的边的集合. 点对称为边(edge)或称弧(arc),其中,称是相邻的(adjacent),称u,v与边相关联(incident)或相邻. 若边的点对有序则称... 阅读全文
posted @ 2009-01-18 17:36 Beetlebum 阅读(3976) 评论(0) 推荐(0) 编辑
摘要: Kosaraju算法的原理:先对逆图作一遍后序遍历,计算访问时间f[u](如果图是一个DAG(有向无环图),这一过程产生一个拓扑排序序列)。然后在原图上再一次DFS,不过是从f[u]最大的未访问点开始遍历。 这样得到的就是一个强连通分量了。因为当原图中w点可以到达v点的时候,在访问逆图的时,逆图中的dfs树中v才可能是w的父节点,这样,f[v]将大于f[w]。再在原图中作DFS,由于是优先访问具... 阅读全文
posted @ 2009-01-17 21:41 Beetlebum 阅读(304) 评论(0) 推荐(0) 编辑