本文讨论拓扑排序。
我们从题目着手。
概念
拓扑排序,是对一个有向无环图(Directed Acyclic Graph简称DAG)G进行拓扑排序,是将G中所有顶点排成一个线性序列,使得图中任意一对顶点u和v,若边(u,v)∈E(G),则u在线性序列中出现在v之前。通常,这样的线性序列称为满足拓扑次序(Topological Order)的序列,简称拓扑序列。简单的说,由某个集合上的一个偏序得到该集合上的一个全序,这个操作称之为拓扑排序。 ——百度百科
注意:只有有向图存在拓扑序列(即拓扑次序)而无向图没有,且可以证明,有向无环图的拓扑序列一定存在。因此有向无环图也被称为拓扑图。且,一个有向无环图至少存在一个入度为0的点。
易知,一个有向无环图删去某个节点之后依然是有向无环图,因此我们的思路可以像这样:
1 | queue 中放入所有入度为0的点 |
题解:
1 |
|