void dfs(int x){ if(cykl == false){ color[x] = 1; for(list::iterator K = graf[x].begin(); K != graf[x].end(); K++){ if(color[*K] == 0){ dfs(*K); } else{ if(color[*K] == 1){ cykl = true; return; } } } topsort.push_back(x); color[x] = 2; } } void dfsMAX(int V){ cykl = false; topsort.clear(); for(int i = 1; i <= V; i++){ if(color[i] != 2){ dfs(i); } if(cykl == true) break; } }