zoukankan      html  css  js  c++  java
  • 用栈消除递归调用,实现DFS【伪代码】

    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

  • 相关阅读:
    case when if
    存储过程 、函数和事务
    poj 2263
    hdu -1874
    poj 2472
    2544 hdu
    模板floyed
    模板Dijkstra
    hdu 2066
    hdu 2544
  • 原文地址:https://www.cnblogs.com/candycloud/p/3324390.html
Copyright © 2011-2022 走看看