Graph g ← 生成图
palette ← WHITE

# 对非完全连通图进行深度优先搜索
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)