图论
施工中请绕行
喜欢研究底层技术,编译原理,操作系统技术,数据库引擎实现原理。2012年校园招聘进入腾讯北分云平台部,从事终端开发职位。
展开
-
tarjan算法的实现
自己将tarjan算法实现了一遍,深入理解了一遍,感觉有所收获~~ #includeusing namespace std;int time=1,low[1000],dfn[1000];int stack[1000],top=0;bool instack[1000]={false};struct LIST{ int v; LIST *next;};LIST *head[1000]={NULL};int min(int a,int b){原创 2011-02-20 16:09:00 · 3719 阅读 · 1 评论 -
tarjan算法
说到以Tarjan命名的算法,我们经常提到的有3个,其中就包括本文所介绍的求强连通分量的Tarjan算法。而提出此算法的普林斯顿大学的Robert E Tarjan教授也是1986年的图灵奖获得者(具体原因请看本博“历届图灵奖得主”一文)。 首先明确几个概念。强连通图。在一个强连通图中,任意两个点都通过一定路径互相连通。比如图一是一个强连通图,而图二不是。因为没有一条路使得点4到达点1、2或3。强连通分量。在一个非强连通图中极大的强连通子图就是该图的强连通分量。比如图三中子图{1,2,转载 2011-02-19 18:57:00 · 25933 阅读 · 5 评论 -
POJ2186解题报告 强连通分支+缩点
这道题刚开始我用的普通DFS直接搜索,不幸的是超内存了,因为我无知的开了一个长度为1亿的字符数组(PS:以后开大数组前一定要先算一下需要的内存),被MLE后不甘心继续修改,把内存降下来后继续提交,TLE,再改,再TLE。。若干次后我意识到普通算法好像过不去。。也没有心思再改了。。。看了讨论才知道这个需要用求强连通分量的tarjan算法,百度上找到tarjan,看了挺长时间才把他真正看懂。。看懂了tarjan,我又想了一个多小时,写出代码,终于将这道题AC。。真不容易,不过这道题让我学到了新的东西,A掉这题的原创 2011-02-20 20:49:00 · 1439 阅读 · 0 评论 -
POJ2553解题报告 强连通分支
The Bottom of a GraphTime Limit: 3000MS Memory Limit: 65536KTotal Submissions: 4000 Accepted: 1637DescriptionWe will use the following (standard) definitions from graph theory. Let V be a nonempty and finite set, its elements being called vertices (or node原创 2011-02-21 10:46:00 · 1266 阅读 · 0 评论 -
无向图求点割集算法
黑书上给出了关于求点割集的算法,但是比较模糊,我查阅了网络上的相关资料,理解了求点割集的过程,写出如下求点割集的代码:割点集的定义:如果在连通图G中去掉某一点后图不连通,那么这个点即为G的割点,所有割点的集合即为点割集。求点割集的方法:利用tarjan算法的思想,用数组dfn[v]存储DFS遍历到点v的时间,数组low[v]存储点v能追溯到最早的祖先节点。如果对于点v来说有如下结论:1.如果点v是DFS序列的根节点,则如果v有一个以上的孩子,则v是一个割点。2.如果v不是DFS序列根节点,并且点v的任意后继原创 2011-02-23 15:23:00 · 9280 阅读 · 4 评论 -
POJ1236解题报告 强连通分支+缩点
Network of SchoolsTime Limit: 1000MS Memory Limit: 10000KTotal Submissions: 4177 Accepted: 1636DescriptionA number of schools are connected to a computer network. Agreements have been developed among those schools: each school maintains a list of schools t原创 2011-02-21 15:25:00 · 1627 阅读 · 3 评论 -
拓扑排序
最近在学习一些图算法,看到了拓扑排序,这个算法上学期数据结构课上就学过,不过当时没有重视,早就忘光了,刚才好好看了一遍。拓扑排序是一个简单的算法,很容易理解,其思想是:找到图中入度为0的一个顶点并输出它,将以这个定点为起点的边全部删掉,然后再在剩余的点集中找到一个入度为0的点,重复这个过程,直至将全部点输出。 拓扑排序算法的证明:在点集中找入度为0的点的实际意义是:找到不需要前提的工作,将这个工作做完后,以这个工作为前提的其他工作也就不需要这个工作做前提了,在图上的意义就是将以这个原创 2011-02-21 20:37:00 · 1037 阅读 · 0 评论 -
POJ1523解题报告 求点割集
SPFTime Limit: 1000MS Memory Limit: 10000KTotal Submissions: 2082 Accepted: 932DescriptionConsider the two networks shown below. Assuming that data moves around these networks only between directly connected nodes on a peer-to-peer basis, a failure of a si原创 2011-02-23 16:37:00 · 1912 阅读 · 0 评论