Submission #1257663

#TimeUsernameProblemLanguageResultExecution timeMemory
1257663anha3k25cvpPotemkin cycle (CEOI15_indcyc)C++20
30 / 100
1096 ms1860 KiB
#include <bits/stdc++.h> using namespace std; int n, m; vector<vector<int>> g; vector<vector<char>> adjMat; vector<int> path; vector<char> used; bool found = false; bool is_induced_cycle(const vector<int> &cyc) { int L = (int)cyc.size(); for (int i = 0; i < L; ++i) { for (int j = i + 1; j < L; ++j) { // skip consecutive pairs on the cycle (including last-first) if (j == i + 1) continue; if (i == 0 && j == L - 1) continue; if (adjMat[cyc[i]][cyc[j]]) return false; // chord found } } return true; } void dfs(int u, int start) { if (found) return; for (int v : g[u]) { if (found) return; if (v == start) { // path currently contains nodes from start ... u // check cycle length: path.size() (example accepts length 4) if ((int)path.size() >= 4) { if (is_induced_cycle(path)) { // print and stop for (int x : path) { cout << x << " "; } cout << "\n"; found = true; return; } } } else if (!used[v]) { used[v] = 1; path.push_back(v); dfs(v, start); path.pop_back(); used[v] = 0; } } } int main() { ios::sync_with_stdio(false); cin.tie(nullptr); if (!(cin >> n >> m)) return 0; g.assign(n+1, {}); adjMat.assign(n+1, vector<char>(n+1, 0)); for (int i = 0; i < m; ++i) { int u, v; cin >> u >> v; if (!adjMat[u][v]) { g[u].push_back(v); g[v].push_back(u); adjMat[u][v] = adjMat[v][u] = 1; } } used.assign(n+1, 0); for (int s = 1; s <= n && !found; ++s) { // start DFS from s used[s] = 1; path.clear(); path.push_back(s); dfs(s, s); path.pop_back(); used[s] = 0; } if (!found) 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...