DFS(G)it
for each vertex u in G.Vim
u.color = whitetop
u.pi = NILwhile
time = 0co
let A be a stacktime
for each vertex u in G.Vlet
if u.color == whitepush
A.push(u)
while A is not empty
x = A.top()
flag = 0
for each v in G:Adj[x]
if v.color == white//遇到堆栈顶端元素相邻的节点有白色的都入栈
flag = 1
time = time + 1
v.d = time
v.pi = x
v.color = gray
A.push(v)
if flag == 0//若是栈顶端节点全部相邻节点都不是白色【均被标记为灰色或者黑色】则出栈
y = A.pop()
y.color = black
time = time + 1
y.f = time