Graph g ← 建立圖形
LinkedList 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 新增至串列最前端