Submission #154998

#TimeUsernameProblemLanguageResultExecution timeMemory
154998TadijaSebezPotemkin cycle (CEOI15_indcyc)C++11
100 / 100
828 ms3308 KiB
#include <bits/stdc++.h> using namespace std; #define pb push_back const int N=1005; const int inf=1e9+7; vector<int> E[N]; int n,m,par[N]; bool has[N][N]; int dist[N],ban[N]; void Solve(int u, int v) { queue<int> q; for(int i=1;i<=n;i++) dist[i]=inf,ban[i]=0; for(int i=1;i<=n;i++) if(has[u][i] && has[v][i]) ban[i]=1; dist[u]=par[u]=0; for(int i=1;i<=n;i++) if(has[u][i] && !ban[i] && i!=v) dist[i]=1,par[i]=u,q.push(i); while(q.size()) { int x=q.front(); q.pop(); for(int y:E[x]) if(dist[y]>dist[x]+1 && !ban[y]) { dist[y]=dist[x]+1; par[y]=x; q.push(y); } } if(dist[v]!=inf) { for(int i=v;i;i=par[i]) printf("%i ",i); exit(0); } } vector<pair<int,int>> edges; int main() { scanf("%i %i",&n,&m); for(int u,v;m--;) scanf("%i %i",&u,&v),E[u].pb(v),E[v].pb(u),has[u][v]=has[v][u]=1,edges.pb({u,v}); mt19937 rng(time(0)); shuffle(edges.begin(),edges.end(),rng); for(int i=0;i<edges.size() && i<=5000;i++) Solve(edges[i].first,edges[i].second); printf("no\n"); return 0; }

Compilation message (stderr)

indcyc.cpp: In function 'int main()':
indcyc.cpp:41:15: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for(int i=0;i<edges.size() && i<=5000;i++) Solve(edges[i].first,edges[i].second);
              ~^~~~~~~~~~~~~
indcyc.cpp:37:7: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  scanf("%i %i",&n,&m);
  ~~~~~^~~~~~~~~~~~~~~
indcyc.cpp:38:84: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  for(int u,v;m--;) scanf("%i %i",&u,&v),E[u].pb(v),E[v].pb(u),has[u][v]=has[v][u]=1,edges.pb({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...