Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- template<typename C>
- void DFS (const Grafo<C> & g, int origen, map<int, char> & estado, bool & ciclo, list<int> & ciclos, list<list<int>> & todos_ciclos){
- list<Grafo<int>::Arco> adyacentes;
- g.devolver_adyacentes(origen,adyacentes);
- typename list<Grafo<int>::Arco>::const_iterator it;
- estado[origen] = 'a';
- for (it = adyacentes.begin(); it != adyacentes.end(); it++){
- if (estado[it->devolver_adyacente()] == 'a'){
- ciclo=true;
- }
- else if (estado[it->devolver_adyacente()] == 'b'){
- cout << it->devolver_adyacente();
- ciclos.push_back(it->devolver_adyacente());
- DFS (g, it->devolver_adyacente(),estado,ciclo,ciclos,todos_ciclos);
- if (ciclo == false)
- ciclos.pop_back();
- else {
- todos_ciclos.push_back(ciclos);
- ciclos.pop_back();
- ciclo=false;
- }
- estado[it->devolver_adyacente()] = 'b';
- }
- }
- estado[origen] = 'n';
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement