拓扑排序

Posted delta-cnc

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了拓扑排序相关的知识,希望对你有一定的参考价值。

关于拓扑排序,基础图论中可以说是比较常见的题型,对于一些存在明显递推顺序的图论题目例如食物链计数,对于每一个结点存在一个明显的递推$f[k] = sum(f[i])$ $f[i]$为与它连边,并且从图形上说在它上面的点的方案数,我们肯定不能直接去利用它“上面的点”的方案数,这时候我们需要一定的顺序,来实现我们的目的,这个过程称为拓扑排序。实现拓扑排序的过程有许多种,比如递归、优先队列与队列混用、单纯队列加上入度、出度数组,本人经常使用最后一种,就大概说一下实现过程。

第一步先将所有入度为0的点加入队列,然后拓展,在拓展过程中利用入度数组in[to],先对他所连点进行in[to]--操作,如果in[to]==0,就将这个点加入不断重复这一过程。

以上是关于拓扑排序的主要内容,如果未能解决你的问题,请参考以下文章

拓扑排序

『拓扑排序』拓扑排序模板

拓扑排序算法实现

图 - 拓扑排序 (二)

拓扑排序

拓扑排序+关键路径