我有一个图的邻接矩阵。我需要输出该图中的所有周期。我如何使用 dfs 来做到这一点?
void al_dfs(int tmp_vertex,int** Graph,vector<int>& color,int number,vector<int>& result){
color[tmp_vertex] = 1;
for(int i = 0;i<number;i++){
if((color[i] == 0)){ al_dfs(i,Graph,color,number,result); result.push_back(i); };
if((color[i] == 1)){
for(int i = 0;i< result.size();i++) cout << result[i] << " ";
}
}
color[tmp_vertex] = 2;
}
我写了一个小功能,但我明白还有很多事情还没有完成。
您可以阅读
《Algorithms FOURTH EDITION 》 by Robert Sedgewick and Kevin Wayne
并搜索Finding a directed cycle
部分,其中提供了完整的java代码和图表。