Submission #812722

#TimeUsernameProblemLanguageResultExecution timeMemory
812722Dan4LifeToy Train (IOI17_train)C++17
0 / 100
4 ms1236 KiB
#include "train.h" #include <bits/stdc++.h> using namespace std; using vi = vector<int>; #define pb push_back #define sz(a) (int)a.size() #define all(a) begin(a),end(a) const int mxN = (int)20; vi adj[mxN], v, a, r; bool vis[mxN]; bool recur(int s){ vis[s]=1; v.pb(s); for(auto u : adj[s]){ if(!vis[u]){ if(a[s]){ if(recur(u)) return 1; } else if(!recur(u)) return 0; } else if(vis[u]==1){ int good = 0, pos = sz(v)-1; while(pos>=0){ if(r[v[pos]]) good=1; if(v[pos]==u) break; pos--; } if(good and a[s]) return 1; if(!good and !a[s]) return 0; } } vis[s]=2; v.pop_back(); return 0; } vi who_wins(vi A, vi R, vi U, vi V) { int n = sz(A), m = sz(U); vi ans(n,0); for(int i = 0; i < n; i++) a[i]=A[i],r[i]=R[i]; for(int i = 0; i < m; i++) adj[U[i]].pb(V[i]); for(int i = 0; i < n; i++) sort(all(adj[i])); for(int i = 0; i < n; i++) ans[i] = recur(i),memset(vis,0,sizeof(vis)); return ans; }
#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...