Graph g ← グラフの生成

depthFirstSearch():
    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)
        else if color[v] = GRAY:
            エッジ(u, v)はバッグエッジ   # 検出

    color[u] ← BLACK