cainiaozr

导航

 

DFS( G)

1.  for each vertex u  in V(G)

2.         do color[u]=WHITE

3.                pi[u]=NIL

4.  time=0

5.  for each vertex u in V(G)

6.         do if color[u]=WHITE

7.                   then DFS-VISIT(u)

DFS-VISIT(u)

1.  color[u]=GRAY

2.  time++;

3.  d[u]=time;

4.  Stack S;

5.  S.push(u);

6.  while( !S.empty())

7.          w=S.top();

8.          bool bl=true; //用来判断w是否有白色的邻居

9.          for each v in Adj[w]

10.               if( color[v]==WHITE)

11.                           pi[v]=w;

12.                           color[v]=GRAY;

13.                           d[v]=++time;

14.                           S.push(v);

15.                           bl=false; //此时w有白色的neighborhood

16.          if( bl)  //w has no white neighborhood

17.                  then  color[w]=BLACK;    f[w]=++time;

18.                              S.pop();        //w出栈

19.

posted on 2012-12-07 17:46  cainiaozr  阅读(122)  评论(0)    收藏  举报