Graph g ← 生成图
List list ← 空的链表

# 对图 g 进行拓扑排序
# 在链表 list 中记录节点的顺序
topologicalSort():
    for v ← 0 to g.N - 1:
        color[v] ← WHITE
    
    for v ← 0 to g.N - 1:
        if color[v] = WHITE:
            dfs(v)

dfs(u):
    color[u] ← GRAY
    for v in g.adjLists[u]:
        if color[v] = WHITE:
            dfs(v)

    color[u] ← BLACK
list.insert(u) # 在链表的开头添加 u