Submission #245347

#TimeUsernameProblemLanguageResultExecution timeMemory
245347lycPotemkin cycle (CEOI15_indcyc)C++14
60 / 100
1084 ms7880 KiB
#include <bits/stdc++.h> using namespace std; #define TRACE(x) cerr << #x << " :: " << x << endl #define _ << " " << #define SZ(x) (int)(x).size() #define ALL(x) (x).begin(),(x).end() #define FOR(i,a,b) for(int i=(a);i<=(b);++i) #define RFOR(i,a,b) for (int i=(a);i>=(b);--i) using ii = pair<int,int>; const int mxN = 1e3+5; const int mxR = 1e5+5; int N, R; vector<int> al[mxN]; int dist[mxN], pa[mxN], rt[mxN]; int mnrtd[mxN][mxN]; vector<int> ans; bool solve(int s) { memset(dist,-1,sizeof dist); memset(pa,-1,sizeof pa); memset(rt,-1,sizeof rt); queue<int> q; vector<ii> tmp; for (int v : al[s]) dist[v] = 1, rt[v] = v, q.push(v); while (!q.empty()) { int u = q.front(); q.pop(); for (int v : al[u]) if (v != s) { if (dist[v] == -1) { dist[v] = dist[u]+1; pa[v] = u; rt[v] = rt[u]; q.push(v); } else if (rt[v] != rt[u] && mnrtd[rt[u]][rt[v]] == -1) { mnrtd[rt[u]][rt[v]] = mnrtd[rt[v]][rt[u]] = dist[u]+dist[v]+1; tmp.emplace_back(u,v); } } } for (ii x : tmp) { int u = x.first, v = x.second; if (mnrtd[rt[u]][rt[v]] >= 4) { for (int y = u; y != -1; y = pa[y]) ans.push_back(y); ans.push_back(s); reverse(ALL(ans)); for (int y = v; y != -1; y = pa[y]) ans.push_back(y); return true; } mnrtd[rt[u]][rt[v]] = mnrtd[rt[v]][rt[u]] = -1; } return false; } int main() { ios::sync_with_stdio(false); cin.tie(0); cin >> N >> R; FOR(i,1,R){ int A, B; cin >> A >> B; al[A].push_back(B); al[B].push_back(A); } memset(mnrtd,-1,sizeof mnrtd); FOR(i,1,N){ if (solve(i)) { for (int x : ans) { cout << x << ' '; } cout << '\n'; return 0; } } cout << "no" << '\n'; }
#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...