DFS(G)

  for each vertex u in G.V

  u.color = white

  u.pi = NIL

  time = 0

  let A be a stack

  for each vertex u in G.V

    if u.color == white

    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

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-07-31
  • 2021-08-07
  • 2021-07-26
  • 2021-10-04
猜你喜欢
  • 2022-12-23
  • 2021-10-08
  • 2021-12-30
  • 2022-12-23
  • 2021-09-27
  • 2021-09-03
相关资源
相似解决方案