您的位置:首页 > 其它

算法导论 Chapter 22 Ex 22.3-6

2012-12-07 17:46 155 查看
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.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: