拓扑排序:
两个队列,一个放不需要重启入度为0的,一个放需要重启入度为0的....从不需要重启的队列开始,每弹出一个数就更新下入度,遇到入读为0的就加入到相应队列里,当队列空时,记录重启次数+1,交换队列..一直到两个队列都为空
Smart Software Installer
Time Limit: 2000/1000 MS (Java/Others) Memory ...
分类:
编程语言 时间:
2014-11-04 11:03:02
阅读次数:
282
题目3 : 光棍节时间限制:30000ms单点时限:1000ms内存限制:256MB描述尽管付出了种种努力,jzp还是得过光棍节。jzp非常不爽,但也无能为力,只能够哀叹起来他的命运。他想到了一位长者的人生经验:“人的一生,不光要靠自我奋斗,也要考虑历史的进程”。他终于明白自己只是时运不济,所以又继...
分类:
其他好文 时间:
2014-11-02 23:51:29
阅读次数:
495
查错考场上又写挂的一道签到题。。。我们发现这题要求得到一个最小字典序列显然找到所有序列然后排序是不可取的,那么我们不能使用平常的拓扑排序方法,怎么搞使得在每次处理拓扑顺序的时候来维护呢?用小根堆维护入度为0的点即可,输入的时候统计入度{$inline on}const maxn=100010;typ...
分类:
其他好文 时间:
2014-11-02 09:17:18
阅读次数:
285
拓扑排序,要让字典序最小,所以把栈改成堆。 1 #include 2 #include 3 #include 4 using namespace std; 5 #define N 100001 6 priority_queue,greater >Q; 7 int n,m,x,y; 8 int v[N...
分类:
编程语言 时间:
2014-11-02 09:15:08
阅读次数:
165
链接:http://poj.org/problem?id=1128
题意:有几张图片,给你叠加到一起之后的图,问叠加的可能性,如有多种可能则按字典序由小到大输出。
思路:根据给出的图形建一个图,被覆盖的图片向覆盖它的图片建边,然后拓扑排序。
拓扑排序按照字母顺序从小到大找入度为0的点,用dfs形式的拓扑排序,就按照字典序输出了。
POJ1270的做法也类似: 代码
...
分类:
编程语言 时间:
2014-11-02 00:36:56
阅读次数:
196
在线的LCA算法,dfs遍历整棵树,对于每个点出现的时候都插入到数组中,然后查询两个点的lca就是两个点在数组中最后出现位置间的dep值最小的点,就转化为链上的RMQ问题了。#include #include #include #include #include #include #include ...
分类:
其他好文 时间:
2014-10-31 22:04:52
阅读次数:
214
裸的LCA离线算法,存下来当模板用吧。思想就是,将所有的查询都先存起来,然后对树做一次dfs遍历,对每一次经过的节点进行染色,标记为未访问,正在访问,和已经访问完毕。可以很明显的发现如果当前点是一个查询的端点,那么如果另外一个端点正在访问,则当前点是另外一个端点的子节点,两者的LCA为另外一个端点,...
分类:
其他好文 时间:
2014-10-31 20:34:28
阅读次数:
217
poj 4084:拓扑排序
很好的题目,恶心的算法
描述
给出一个图的结构,输出其拓扑排序序列,要求在同等条件下,编号小的顶点在前。
输入
若干行整数,第一行有2个数,分别为顶点数v和弧数a,接下来有a行,每一行有2个数,分别是该条弧所关联的两个顶点编号。
v
输出
若干个空格隔开的顶点构成的序列(用小写字母)。
样例输入
6 8
1 2
1 3...
分类:
编程语言 时间:
2014-10-30 22:39:29
阅读次数:
213
题意:给定一系列关系(只存在大写字母),判断是否存在矛盾,
或无法确定关系,或可以确定唯一的关系
分析:利用拓扑排序,但是需要边输入关系边排序
矛盾:判断是否存在环
确定关系:能找出唯一的拓扑排序
不能确定关系:不存在环,且所有关系处理后,关系仍无法确定...
分类:
编程语言 时间:
2014-10-30 19:21:14
阅读次数:
200