拓扑排序一个核心的思想是,如果一个节点的入度为0,说明该节点没有依赖任何节点或者依赖的节点都是完成了,那么就可以安排这个节点了。
void topSort() {
for (图中的每个顶点v) {
if (indegree[v] == 0) {
// 入度为0
Enqueue(v, Q);
}
}
while (!IsEmpty(Q)) {
v = Dequeue(Q);
cnt++;
for (v的每个邻接点w) {
--indegree[w];
if (indegree[w] == 0) {
Enqueue(w, Q);
}
}
}
if (|v| != cnt) {
cout << "存在回路\n";
}
}