本文介绍使用深度先搜索对向无环图(DAG)进行拓扑排序。 对于一个有向无环图G=(V,E)来说,其拓扑排序是G中所有结点的一种线性次序,该次序满足如下条件:如果G包含边(u,v)则结点u在拓扑排序中处于结点v的前面(若图G包含一个环路则不可能排出一个线性次序)。可将图中的拓扑排序看成是将图的所...
分类:
编程语言 时间:
2015-03-07 22:36:27
阅读次数:
302
深度优先搜索使用的策略是,只要与可能就在图中尽量“深入”。DFS总是对最近才发现的结点v出发边进行探索,知道该结点的所有出发边都被发现为止。一旦v的所有出发边都被发现了,搜索就回溯到v的前驱结点(v是经该结点才被发现的),来搜索该前驱结点的出发边。该过程持续知道从源结点可以到达的所有结点都被发现.....
分类:
编程语言 时间:
2015-03-07 18:21:51
阅读次数:
120
广度优先搜索以源结点s为出发点,算法始终将已发现和未发现结点之间的边界,沿其广度方向向外扩展。也即算法需要在发现所有距离源结点s为k的所有结点之后才会去发现距离源结点距离为k+1的其他结点。 talk is cheap,show me the code!上具体的代码,最容易解释这一切。 该例...
分类:
编程语言 时间:
2015-03-07 15:35:31
阅读次数:
158
1.题目描述:点击打开链接
2.解题思路:本题让我长见识了。也学到了很多新的知识:LCA,多级祖先算法。如果只是单纯地将无根树转化为有根树,找到u,v的中点,再用BFS计算中线上结点的个数,那么最终会导致TLE。本题的高效算法如下:
首先求出以1为根的树的所有结点的总个数,保存在num数组中,再利用LCA算法求出u,v的公共祖先,设为LCA。找到u,v结点的中点mid.此时规定deep...
分类:
其他好文 时间:
2015-03-02 09:37:41
阅读次数:
120
题目大意:给出一棵二叉树,整个树是天平,每个结点有一个砝码或一个天平,对于任意一个天平,绳子都在中点,每个砝码都有重量,求最少修改多少个砝码的重量使得整个天平平衡。
本题的关键在于一个结论:若最终天平平衡,则在同一个深度的所有结点,无论它的祖先结点是什么,重量都应该相同。并且上一层的重量应该是下一层的2倍。证明其实是显然的。。
之后只需要把所有的结点分块,然后取结点最多的块,其余的结点...
分类:
其他好文 时间:
2015-02-27 15:19:28
阅读次数:
165
小猴子下落时间限制:3000ms | 内存限制:65535KB难度:3描述有一颗二叉树,最大深度为D,且所有叶子的深度都相同。所有结点从左到右从上到下的编号为1,2,3,·····,2的D次方减1。在结点1处放一个小猴子,它会往下跑。每个内结点上都有一个开关,初始全部关闭,当每次有小猴子跑到一个开关...
分类:
编程语言 时间:
2015-02-18 12:58:45
阅读次数:
801
堆优先队列:特殊的”队列”,取出元素的顺序是依照元素的优先权(关键字)大小,而不是元素进入队列的先后顺序
堆是优先队列的完全二叉树表示。
堆的两个特性:
①结构性:用数组表示的完全二叉树
②有序性:任意结点的关键字是其子树所有结点的最大值,叫最大堆(或最小值,叫最小堆)(注意从根结点到任意结点路径上结点序列的有序性)下面举一个最大堆的例子。
/** 最大堆的操作 */
typedef st...
分类:
编程语言 时间:
2015-02-17 22:21:37
阅读次数:
231
小猴子下落时间限制:3000ms | 内存限制:65535KB难度:3描述有一颗二叉树,最大深度为D,且所有叶子的深度都相同。所有结点从左到右从上到下的编号为1,2,3,·····,2的D次方减1。在结点1处放一个小猴子,它会往下跑。每个内结点上都有一个开关,初始全部关闭,当每次有小猴子跑到一个开关...
分类:
其他好文 时间:
2015-02-17 15:13:31
阅读次数:
173
通常,当服务涉及到的数据量大到一定程度以后,我们会考虑拆分数据。在这种分布式架构中,每个结点只拥有总数据量的其中一部分,而最终的输出结果会汇总所有结点的结果。这种Map-reduce思想的架构,是尽量不去查分程序,而只是拆分数据来支持大数据的处理,如下图所示。这种框架对每个worker结点的可靠性要求比较高,如果某一个worker结点挂掉了,那么最后的输出结果将是不全的。
我设计的这个分...
分类:
其他好文 时间:
2015-02-15 18:10:47
阅读次数:
134
输入一个整数和一棵二元树。从树的根结点开始往下访问一直到叶结点所经过的所有结点形成一条路径。
打印出和与输入整数相等的所有路径。
例如输入整数22 和如下二元树
10
/ 5 12
/ 4 7
则打印出两条路径:10, 12 和10, 5, 7。
思路:
1、当访问到某一节点时,把该结...
分类:
其他好文 时间:
2015-02-09 18:32:44
阅读次数:
113