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) 為 Back Edge

    color[u] ← BLACK