假设我们有一组任务要完成,并且有些任务要在其它任务完成之后才能开始,所以我们必须非常小心这些任务的执行顺序。如果这些任务的执行顺序足够简单的话,我们可以用链表来存储它们,这是一个很好的方案,让我们可以准确知道任务的执行顺序。问题是有时候不同任务之间的关系是非常复杂的,有些任务依赖于两个甚至更多的任务...
分类:
其他好文 时间:
2014-07-16 20:28:34
阅读次数:
275
这个题目是拓扑排序,因为边的数目非常大,所以普通的建图会爆内存,所以这里采用vector容器。
1:建完图后对入度为0的点加入队列,然后对整幅图进行扫描,得到每个点的位置。
2:要用一个数组存相对位置,所以不能只用一个变量存储,因为每次出队列只能有一个元素。。
2:用数组模拟果然比stl快一些。。。
题目链接:
哈哈 我在这里
题面:
Reward
Time Limit...
分类:
其他好文 时间:
2014-07-12 16:35:07
阅读次数:
292
拓扑排序虽是一种排序,但是它跟平时所接触的sort或者qsort不同,排序的意义不同。拓扑排序针对有向无回路图(DAG)而言的,不应用与存在回路的有向图。【图论】广度优先搜索和深度优先搜索 有说到了BFS和DFS,拓扑排序是DFS的一个应用。有向无回路图能说明事件的发生的先后的顺序。比如穿衣服,士兵...
分类:
其他好文 时间:
2014-07-11 20:11:54
阅读次数:
298
之前很傻,,感觉看不到拓扑是啥东西。。脑子太烂了吧。。。今晚上瞄了一眼就懂了。。我就放代码上来就行了。。注释也不打了,,因为太简单了。#include #include using namespace std;#define CC(i) memset(i, 0, sizeof(i))const in...
分类:
其他好文 时间:
2014-07-09 13:33:27
阅读次数:
235
搜索一个图是有序地沿着图的边访问所有定点, 图的搜索算法可以使我们发现很多图的结构信息, 图的搜索技术是图算法邻域的核心。
e...
分类:
其他好文 时间:
2014-07-09 10:30:48
阅读次数:
233
本题要求输出全部拓扑排序的序列。
还好本题的数据量不是很大,限制在26个大写英文字母,故此可以使用递归法输出。
这个递归输出全部解在Leetcode很多这样的题目的,不小心的话,还是很难调试的。
总体考了递归和拓扑排序,还有判断是否可以拓扑排序-就是是否图有环。
考了三大知识点,难度还是有的。因为数据量不大,故此判断环可以使用一般递归方法,递归只需要注意细节就好了。
#incl...
分类:
其他好文 时间:
2014-07-08 15:35:30
阅读次数:
141
Topological Sort题解。本题是简单的入门题目。
Topological Sort的思想很简单,就是按没有入度的点,先输出,然后删除这个点的出度。然后输出下一组没有入度的点。
如何实现也是很简单的:
这里使用邻接表,建图的时候反过来建图,建立一个入度邻接表。
然后使用一个vis数组,记录访问过的节点,也可以根据这个信息知道哪些是已经输出的点,这个时候这些点的入度可以不算为当前入...
分类:
其他好文 时间:
2014-07-08 12:46:41
阅读次数:
282
问题:POJ1094本题考查拓扑排序算法拓扑排序:1)找到入度为0的点,加入已排序列表末尾;2)删除该点,更新入度数组。循环1)2)直到1. 所有点都被删除,则找到一个拓扑排序;2. 或剩余结点中没有入度为0的点,则原图中必存在环。本题算法1.依次输入一组关系对当前关系进行拓扑排序1)若存在环,则无...
分类:
其他好文 时间:
2014-07-07 09:01:31
阅读次数:
189
2014.07.04 17:23简介: 我们考虑一种特殊的图: 1.有向图 2. 只有一个连通分量 3. 不存在环 那么这样的图里,必然可以找到一种排序方式,来确定谁在谁的“前面”。 简单的来说可以这么理解:如果存在一条边a->b,那么a顶点就在b的前面。 下面我们通过例子...
分类:
编程语言 时间:
2014-07-06 18:55:10
阅读次数:
183
题意:一些具有拓扑序的节点需要染色,这些节点一共分为两类。问你按照给出的拓扑顺序染色完结点最少需要多少次切换。思路:我们按照拓扑排序的做法,建立两个栈分别存放两种不同种类的节点,每次把一个栈中的所有节点都处理完了才处理另一个,这样切换次数即为最终答案。代码如下: 1 /**************....
分类:
其他好文 时间:
2014-07-03 09:28:29
阅读次数:
169