Submission #527409

#TimeUsernameProblemLanguageResultExecution timeMemory
527409maomao90Potemkin cycle (CEOI15_indcyc)C++17
50 / 100
449 ms93508 KiB
#include <bits/stdc++.h> using namespace std; #define REP(i, j, k) for (int i = j; i < k; i++) #define RREP(i, j, k) for (int i = j; i >= k; i--) template<class T> inline bool mxto(T &a, T b) {return a < b ? a = b, 1 : 0;} template<class T> inline bool mnto(T &a, T b) {return a > b ? a = b, 1 : 0;} typedef long long ll; #define FI first #define SE second #define MP make_pair typedef pair<int, int> ii; #define pb push_back #define ALL(x) x.begin(), x.end() typedef vector<int> vi; typedef vector<ii> vii; #ifndef DEBUG #define cerr if (0) cerr #endif #define INF 1000000005 #define LINF 1000000000000000005ll #define MAXN 1005 #define MAXR 200005 int n, r; vi adj[MAXN], nadj[MAXR]; int grid[MAXN][MAXN]; ii eg[MAXR]; int vis[MAXR]; int p[MAXN]; bool done; void dfs(int u) { vis[u] = 2; for (int v : nadj[u]) { if (vis[v] == 2) { vi tans; tans.pb(v); while (u != v) { assert(u != -1); tans.pb(u); u = p[u]; } vi ans; ans.pb(eg[tans[0]].SE); ans.pb(eg[tans[0]].FI); REP (i, 1, tans.size() - 1) { auto [a, b] = eg[tans[i]]; ans.pb(a); } assert(eg[tans.back()] == MP(ans[0], ans.back())); for (int i : ans) { cout << i << ' '; } cout << '\n'; done = 1; return; } if (!vis[v]) { vis[v] = 1; p[v] = u; dfs(v); if (done) { return; } } } vis[u] = 1; } int main() { #ifdef DEBUG ios::sync_with_stdio(0), cin.tie(0); #endif cin >> n >> r; memset(grid, -1, sizeof grid); REP (i, 0, r) { int a, b; cin >> a >> b; adj[a].pb(b); adj[b].pb(a); grid[a][b] = i; grid[b][a] = i + r; eg[i] = MP(a, b); eg[i + r] = MP(b, a); } REP (i, 0, r) { auto [a, b] = eg[i]; REP (z, 0, 2) { REP (j, 1, n + 1) { if (j == a) continue; if (grid[b][j] == -1) continue; if (grid[a][j] != -1) continue; nadj[grid[a][b]].pb(grid[b][j]); cerr << i << " --- " << grid[b][j] << '\n'; } swap(a, b); } } REP (i, 0, 2 * r) { if (vis[i]) continue; p[i] = -1; dfs(i); if (done) { return 0; } } cout << "no\n"; } /* 8 12 1 2 2 3 1 3 2 4 4 5 2 5 5 6 5 7 6 7 3 6 6 8 8 3 */

Compilation message (stderr)

indcyc.cpp: In function 'void dfs(int)':
indcyc.cpp:4:40: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
    4 | #define REP(i, j, k) for (int i = j; i < k; i++)
......
   53 |             REP (i, 1, tans.size() - 1) {
      |                  ~~~~~~~~~~~~~~~~~~~~~  
indcyc.cpp:53:13: note: in expansion of macro 'REP'
   53 |             REP (i, 1, tans.size() - 1) {
      |             ^~~
#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...