Submission #53895

#TimeUsernameProblemLanguageResultExecution timeMemory
53895paulicaPotemkin cycle (CEOI15_indcyc)C++14
90 / 100
75 ms3900 KiB
#include <bits/stdc++.h> using namespace std; #define _ << " _ " << #define TRACE(x) cout << #x << " = " << x << endl #define fi first #define se second typedef pair<int, int> pii; const int MaxN = 1010, MaxR = 1e5 + 10; int n, r; vector<pii> e[MaxN]; bool con[MaxN][MaxN]; pii edg[MaxR]; bool vis[MaxR], stk[MaxR]; //int pre[MaxR]; stack<int> path; void dfs(int x, int y, int id) { vis[id] = true; stk[id] = true; path.push(y); for (pii z : e[y]) { if (!con[x][z.fi] && z.fi != x) { if (!vis[z.se]) { //pre[z.se] = id; dfs(y, z.fi, z.se); } else if (stk[z.se]) { //vector<int> cyc = {y}; //for (int u = id; cyc.size() == 1 || cyc.back() != y; u = pre[u]) // cyc.push_back(edg[u].fi + edg[u].se - cyc.back()); //cyc.pop_back(); //for (int i : path) TRACE(i); vector<int> cyc = {path.top()}; for (path.pop(); path.top() != cyc[0]; path.pop()) cyc.push_back(path.top()); //for (int i : cyc) TRACE(i); int m = cyc.size(); for (int len = 3; len < m; len++) for (int i = 0; i < m; i++) { if (con[cyc[i]][cyc[(i + len) % m]]) { for (int j = (i + 1) % m; j != i; j = (j + 1) % m) cout << cyc[j] << " "; cout << cyc[i]; exit(0); } } } } } stk[id] = false; path.pop(); } int main() { ios_base::sync_with_stdio(false); cin.tie(0); cin >> n >> r; for (int i = 0; i < r; i++) { int x, y; cin >> x >> y; e[x].push_back({y, i}); e[y].push_back({x, i}); con[x][y] = con[y][x] = true; edg[i] = {x, y}; } for (int i = 0; i < r; i++) { if (!vis[i]) { path.push(edg[i].fi); dfs(edg[i].fi, edg[i].se, i); path.pop(); } } cout << "no"; 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...