Submission #960004

#TimeUsernameProblemLanguageResultExecution timeMemory
960004pccPovjerenstvo (COI22_povjerenstvo)C++17
13 / 100
198 ms42816 KiB
#include <bits/stdc++.h> using namespace std; #pragma GCC optimize("O3,unroll-loops") #pragma GCC target("avx2,popcnt,sse4") #define pii pair<int,int> #define fs first #define sc second #define ll long long const int mxn = 5e5+10; int N,M; vector<int> paths[mxn]; int deg[mxn]; queue<int> q; int ans[mxn]; bitset<mxn> done; vector<int> v; int col[mxn]; vector<int> bipart[2]; void dfs(int now,int c){ col[now] = c; bipart[col[now]==1].push_back(now); for(auto nxt:paths[now]){ if(done[nxt]||col[nxt])continue; dfs(nxt,-c); } } void psyco(int now){ bipart[0].clear();bipart[1].clear(); dfs(now,1); bool zcol = true,ocol = true; for(auto &i:bipart[0])if(!ans[i])zcol = false; for(auto &i:bipart[1])if(!ans[i])ocol = false; if(!ocol&&!zcol){ cout<<-1; exit(0); } if(zcol)for(auto &i:bipart[0])v.push_back(i); else for(auto &i:bipart[1])v.push_back(i); for(auto &i:bipart[0])done[i] = true; for(auto &i:bipart[1])done[i] = true; return; } int main(){ ios::sync_with_stdio(0);cin.tie(0);cout.tie(0); cin>>N>>M; memset(ans,-1,sizeof(ans)); for(int i = 1;i<=M;i++){ int a,b; cin>>a>>b; deg[a]++; paths[b].push_back(a); } for(int i = 1;i<=N;i++)if(!deg[i])q.push(i); while(!q.empty()){ auto now = q.front(); done[now] = true; q.pop(); if(ans[now] == -1)ans[now] = 1; for(auto nxt:paths[now]){ deg[nxt]--; if(!deg[nxt])q.push(nxt); if(ans[now] == 1){ if(ans[nxt] == -1)ans[nxt] = 0; } } } for(int i = 1;i<=N;i++){ if(ans[i] == 1)v.push_back(i); } for(int i = 1;i<=N;i++){ if(!done[i])psyco(i); } cout<<v.size()<<'\n'; for(auto &i:v)cout<<i<<' ';cout<<'\n'; return 0; }

Compilation message (stderr)

Main.cpp: In function 'int main()':
Main.cpp:81:2: warning: this 'for' clause does not guard... [-Wmisleading-indentation]
   81 |  for(auto &i:v)cout<<i<<' ';cout<<'\n';
      |  ^~~
Main.cpp:81:29: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'for'
   81 |  for(auto &i:v)cout<<i<<' ';cout<<'\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...