Submission #147060

#TimeUsernameProblemLanguageResultExecution timeMemory
147060MvCPotemkin cycle (CEOI15_indcyc)C++11
100 / 100
378 ms2168 KiB
#pragma GCC target("avx2") #pragma GCC optimization("O3") #pragma GCC optimization("unroll-loops") #include<bits/stdc++.h> //#include "boxes.h" #define rc(x) return cout<<x<<endl,0 #define pb push_back #define mkp make_pair #define in insert #define er erase #define fd find #define fr first #define sc second typedef long long ll; typedef long double ld; const ll INF=0x3f3f3f3f3f3f3f3f; const ll llinf=(1LL<<61); const int inf=(1<<30); const int nmax=1e3+2; const int mod=1e9+7; using namespace std; int n,m,i,j,t,x,y,s,f,pr[nmax]; bitset<nmax>vz,vv,b[nmax],r[nmax]; vector<int>a[nmax],vc,vcc; queue<int>q; void dfs(int x,int p) { vz[x]=1; vcc.pb(x); for(int i=0;i<a[x].size();i++) { int y=a[x][i]; if(vz[y])continue; if(b[p][y]) { if(!vv[y]) { vc.pb(y); if(!s && (r[y]&vv).any())s=y; } vv[y]=1; continue; } dfs(y,p); } } int main() { //freopen("sol.in","r",stdin); //freopen("sol.out","w",stdout); //mt19937 rng(chrono::steady_clock::now().time_since_epoch().count()); ios_base::sync_with_stdio(false);cin.tie(0);cerr.tie(0);cout.tie(0); cin>>n>>m; while(m--) { cin>>x>>y; b[x][y]=b[y][x]=1; a[x].pb(y); a[y].pb(x); } for(i=1;i<=n;i++) { b[i].flip(); r[i]=b[i]; r[i][0]=r[i][i]=0; b[i].flip(); } for(i=1;i<=n;i++) { vz.reset(); for(j=1;j<=n;j++) { if(b[i][j] || j==i || vz[j])continue; dfs(j,i); if(s) { m=i; for(t=1;t<=n;t++) { if(r[s][t] && vv[t]) { f=t; break; } } break; } else { for(t=0;t<vc.size();t++)vv[vc[t]]=0; vc.clear(); //vv.reset(); vcc.clear(); } } if(s)break; } if(!s)rc("no"); vv.reset(),vz.reset(); for(i=0;i<vcc.size();i++)vv[vcc[i]]=1; q.push(s); vz[s]=vz[m]=1; pr[s]=m; while(!q.empty()) { x=q.front(); q.pop(); for(i=0;i<a[x].size();i++) { y=a[x][i]; if(vz[y] || (b[m][y] && y!=f))continue; vz[y]=1; pr[y]=x; if(y==f)break; q.push(y); } if(pr[f])break; } while(f) { cout<<f<<" "; f=pr[f]; } cout<<endl; return 0; }

Compilation message (stderr)

indcyc.cpp:2:0: warning: ignoring #pragma GCC optimization [-Wunknown-pragmas]
 #pragma GCC optimization("O3")
 
indcyc.cpp:3:0: warning: ignoring #pragma GCC optimization [-Wunknown-pragmas]
 #pragma GCC optimization("unroll-loops")
 
indcyc.cpp: In function 'void dfs(int, int)':
indcyc.cpp:30:15: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for(int i=0;i<a[x].size();i++)
              ~^~~~~~~~~~~~
indcyc.cpp: In function 'int main()':
indcyc.cpp:90:14: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for(t=0;t<vc.size();t++)vv[vc[t]]=0;
             ~^~~~~~~~~~
indcyc.cpp:100:11: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for(i=0;i<vcc.size();i++)vv[vcc[i]]=1;
          ~^~~~~~~~~~~
indcyc.cpp:108:12: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   for(i=0;i<a[x].size();i++)
           ~^~~~~~~~~~~~
#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...