Submission #702995

#TimeUsernameProblemLanguageResultExecution timeMemory
702995Abrar_Al_SamitToy Train (IOI17_train)C++17
0 / 100
31 ms1748 KiB
#include<bits/stdc++.h> using namespace std; #define vi vector<int> const int nax = 5000; vi g[nax], gt[nax]; int n, m; vector<int>stk; int vis[nax]; bool cyc[nax]; void dfs(int v) { if(vis[v]==1) { for(int i=stk.size()-1; ; --i) { cyc[stk[i]] = true; if(stk[i]==v) break; } return; } stk.push_back(v); vis[v] = 1; for(int to : g[v]) { if(vis[to]!=2) { dfs(to); } } vis[v] = 2; stk.pop_back(); } vi who_wins(vi a, vi r, vi u, vi v) { n = a.size(), m = u.size(); for(int i=0; i<m; ++i) { g[u[i]].push_back(v[i]); gt[v[i]].push_back(u[i]); } for(int i=0; i<n; ++i) if(!vis[i]) { dfs(i); } queue<int>q; vi ret(n); for(int i=0; i<n; ++i) if(r[i] && cyc[i]) { q.push(i); ret[i] = 1; } while(!q.empty()) { int v = q.front(); q.pop(); for(int to : gt[v]) { if(!ret[to]) { ret[to] = 1; q.push(to); } } } // for(int i=0; i<n; ++i) if(r[i] && a[i]) { // bool self_loop = false; // for(int to : g[i]) { // self_loop |= to==i; // } // if(self_loop) { // q.push(i); // ret[i] = 1; // } // } // for(int i=0; i<n; ++i) if(r[i] && !a[i]) { // if(g[i].size()==1 && g[i][0]==i) { // ret[i] = 1; // q.push(i); // } // } // while(!q.empty()) { // int v = q.front(); // q.pop(); // if(!r[v] && !a[v]) { // bool self_loop = false; // for(int to : g[v]) { // self_loop |= to==v; // } // if(self_loop) { // ret[v] = 0; // continue; // } // } // for(int to : gt[v]) if(!ret[to]) { // ret[to] = 1; // q.push(to); // } // } return ret; }
#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...