Submission #1228708

#TimeUsernameProblemLanguageResultExecution timeMemory
1228708kaiboyPotemkin cycle (CEOI15_indcyc)C++20
50 / 100
1101 ms76316 KiB
#include <algorithm> #include <iostream> using namespace std; const int N = 100; int aa[N][N], dd[N], pp[N], qu[N], n; bool bad[N], visited[N]; bool dfs(int i, int t) { if (visited[i]) return false; visited[i] = true; if (bad[i]) return false; if (i == t) return true; for (int j = 0; j < n; j++) if (aa[i][j] && dfs(j, t)) return true; return false; } int main() { int m; cin >> n >> m; while (m--) { int i, j; cin >> i >> j, i--, j--; aa[i][j] = aa[j][i] = true; } for (int s = 0; s < n; s++) for (int t = s + 1; t < n; t++) if (!aa[s][t]) for (int i_ = 0; i_ < n; i_++) if (aa[s][i_] && aa[i_][t]) { for (int i = 0; i < n; i++) { bad[i] = i == i_ || i != s && i != t && aa[i_][i]; visited[i] = false; } if (dfs(s, t)) { for (int i = 0; i < n; i++) dd[i] = n; int cnt = 0; dd[s] = 0, pp[s] = -1, qu[cnt++] = s; for (int h = 0; h < cnt; h++) { int i = qu[h], d = dd[i] + 1; for (int j = 0; j < n; j++) if (aa[i][j] && !bad[j] && dd[j] == n) dd[j] = d, pp[j] = i, qu[cnt++] = j; } cout << s + 1 << ' ' << i_ + 1; for (int i = t; i != s; i = pp[i]) cout << ' ' << i + 1; cout << '\n'; return 0; } } cout << "no\n"; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...