Submission #311525

#TimeUsernameProblemLanguageResultExecution timeMemory
311525Kenzo_1114Potemkin cycle (CEOI15_indcyc)C++17
20 / 100
101 ms2724 KiB
#include<bits/stdc++.h> using namespace std; const int MAXN = 1010; int n, m, depth[MAXN], low[MAXN], par[MAXN]; vector<int> graph[MAXN], l[MAXN]; void dfs(int v, int p) { depth[v] = (v == p) ? 1 : depth[p] + 1; par[v] = p; for(int i = 0; i < (int) graph[v].size(); i++) { int u = graph[v][i]; if(depth[u]) { if(u != p) { low[v] = max(low[v], depth[u]); if(depth[v] - depth[u] >= 3) l[v].push_back(u); } continue; } dfs(u, v); } } int main () { scanf("%d %d", &n, &m); for(int i = 0, u, v; i < m; i++) { scanf("%d %d", &u, &v); graph[u].push_back(v); graph[v].push_back(u); } dfs(1, 1); // for(int i = 1; i <= n; i++) // printf("i = %d par = %d depth = %d low = %d\n", i, par[i], depth[i], low[i]); vector<int> ans; for(int i = 1; i <= n; i++) { bool ok; for(int j = 0; j < l[i].size(); j++) { int cur = i; ok = !(low[cur] > depth[l[i][j]]); ans.push_back(cur); while(cur != l[i][j]) { cur = par[cur]; if(cur != l[i][j] && low[cur] >= depth[l[i][j]]) ok = false; ans.push_back(cur); } if(ok) break; else ans.clear(); } if(ok) break; } if(ans.empty()) printf("no\n"); else { for(int i = 0; i < (int) ans.size(); i++) printf("%d ", ans[i]); printf("\n"); } } /* 5 6 1 2 1 3 2 3 4 3 5 2 4 5 4 5 1 2 2 3 3 4 4 1 1 3 */

Compilation message (stderr)

indcyc.cpp: In function 'int main()':
indcyc.cpp:51:20: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   51 |   for(int j = 0; j < l[i].size(); j++)
      |                  ~~^~~~~~~~~~~~~
indcyc.cpp:32:7: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   32 |  scanf("%d %d", &n, &m);
      |  ~~~~~^~~~~~~~~~~~~~~~~
indcyc.cpp:36:8: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   36 |   scanf("%d %d", &u, &v);
      |   ~~~~~^~~~~~~~~~~~~~~~~
#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...