Graph g ← グラフを生成
palette ← WHITE

# 連結とは限らないグラフgに対して深さ優先探索を行う
depthFirstSearch():
    for v ← 0 to g.N-1:
        color[v] ← WHITE
    
    for v ← 0 to g.N-1:
        if color[v] = WHITE:
            palette ← 新しい色  # 色の源を更新
	    dfs(v)

# 再帰による深さ優先探索
dfs(u):
    color[u] ← palette
    for v in g.adjLists[u]:
        if color[v] = WHITE:
            dfs(v)