参考《数据结构与算法》
本书在复杂深度优先遍历图时,采用三种颜色标记图中节点
1 white 表示未访问
2 gray 表示已经正在访问,其相邻节点
3 black 表示该节点所有的相邻节点都已经深度优先访问结束
算法可以判断图中是否存在环。
算法如下:
#include <iostream>
using namespace std;
#define MAX_VERTEX_NUM 128
enum color{WHITE, GRAY, BLACK};
bool M[MAX_VERTEX_NUM][MAX_VERTEX_NUM];
int colour[MAX_VERTEX_NUM];
int dfsNum[MAX_VERTEX_NUM], num;
int vexnum, edgenum;
void init_graph(){
cout<<"enter vertex number:"<<endl;
cin>>vexnum;
cout<<"enter edge number:"<<endl;
cin>>edgenum;
int i, j;
while(edgenum){
cout<<"add new edge:"<<endl;
cin>>i>>j;