拓扑排序的定义:把每个变量看成一个点,”小于“或者”先后“关系看成有向边,则我们得到一个有向图。这样我们的任务实际上是把一个图的所有节点排序,使每一条有向边的(u,v)对应的u都排在v之前,在图论中,我们称之为拓扑排序。不难发现,如果一个有向图里存在回路,则不存在拓扑排序(如果设置一个标志数组,我们...
分类:
其他好文 时间:
2014-07-24 12:12:25
阅读次数:
258
其实这两个星期以来,自己学会了很多东西,就比如最小环,拓扑排序,用深搜打暴力,一些数学结论,背包,djik什么鬼的求最短路,对最小生成树的更深的理解以及对spfa.bfs的更深的感悟吧,当然还有一些小技巧,就比如用指针啊,计算斜率啊,等等。。。等集训结束之后,再好好总结一下吧。。其实挺不想回去的,回...
分类:
其他好文 时间:
2014-07-24 10:08:33
阅读次数:
164
强连通算法判断是否满足2-sat,然后反向建图,拓扑排序+染色。
一种选择是从 起点开始,另一种是终点-持续时间那个点 开始。
若2个婚礼的某2种时间线段相交,则有矛盾,建边。
容易出错的地方就在于判断线段相交。
若s1
输出路径的做法可以参考论文2-SAT解法浅析
#include
#include
#include
#include
#include
#include
#...
分类:
其他好文 时间:
2014-07-23 16:39:31
阅读次数:
262
一、定义:
拓扑排序是对有向无回路图(DAG)顶点的一种排序,它使得如果存在从u到v的有向路径,那么满足序列中u在v前。
例如:(来自于某牛)
最后变成
所以我们的算法可以描述为这样一个过程:
1、找到整个图中所有的原点,将这些点压进队列(栈)中
2、从队列(栈)中取出一点,输出,将该点及它的边删除,找到它所指向的点,如果改点是一个原点(删除指向它的点后),...
分类:
其他好文 时间:
2014-07-23 13:15:06
阅读次数:
222
题意:有N个人,M个优先级a,b表示a优先于b,并且每个人有个编号的优先级,输出顺序。
思路来自:与PKU3687一样
在基本的拓扑排序的基础上又增加了一个要求:编号最小的节点要尽量排在前面;在满足上一个条件的基础上,编号第二小的节点要尽量排在前面;在满足前两个条件的基础上,编号第三小的节点要尽量排在前面……依此类推。(注意,这和字典序是两回事,不可以混淆。)
如图 1 所示,满...
分类:
其他好文 时间:
2014-07-23 13:14:57
阅读次数:
363
这道题好吧,一开始便是拓扑排序的想法,搞了好久,试了多组测试数据,没错啊,可是没过。。。作孽啊,竟然忘了拓扑不能处理环,白浪费了一晚上。。。只好用动态规划了。。DP【time】【city】表示在time时刻到达city的最迟出发时间,当然,在这个时间不一定到city。转移方程挺简单,不说你也会。 1...
分类:
其他好文 时间:
2014-07-23 12:07:56
阅读次数:
298
hdu 4857 逃生(拓扑逆排序+优先队列)...
分类:
其他好文 时间:
2014-07-23 00:05:47
阅读次数:
266
拓扑排序,以边上标号为点,正方形为边,拓扑图中存在有向环时unbounded,否则bounded;注意:仔细处理输入; 遍历一个点时,下一次遍历拼上的下一个方形边;即假设遍历到 A+ 时,下次从 A- 开始遍历; 1 #include 2 #include 3 #include 4 us...
分类:
其他好文 时间:
2014-07-22 22:41:15
阅读次数:
282
1、拓扑排序,要求输出小的数尽量靠前,而不是字典序...
分类:
其他好文 时间:
2014-07-22 22:39:33
阅读次数:
196
拓扑排序。
反向建边。
为了序号小的尽量在前面,我们每次都取出入度为0的最大的点。
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;
struct list
{
int u,v,w;
int next;
}edge[110000];
int ...
分类:
其他好文 时间:
2014-07-22 22:38:54
阅读次数:
265