#include #include #include #include using namespace std; int n,m; vector < vector > g; vector color; vector p; int cycle_st, cycle_end; bool dfs(int v) { color[v] = 1; for (size_t i = 0; i> n >> m; g = vector>(n); for (int i = 0; i> a >> b; g[a - 1].push_back(b - 1); } p.assign(n, -1); color.assign(n, 0); cycle_st = -1; for (int i = 0; i < n; ++i) if (dfs(i)) break; if (cycle_st == -1) puts("Acyclic"); else { puts("Cyclic"); vector cycle; cycle.push_back(cycle_st); for (int v = cycle_end; v != cycle_st; v = p[v]) cycle.push_back(v); cycle.push_back(cycle_st); reverse(cycle.begin(), cycle.end()); for (size_t i = 0; i < cycle.size(); ++i) printf("%d ", cycle[i] + 1); } system("pause"); }