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)