Submission #416564

#TimeUsernameProblemLanguageResultExecution timeMemory
416564yanireToy Train (IOI17_train)C++11
0 / 100
1137 ms1516 KiB
#include <bits/stdc++.h> using namespace std; #include "train.h" #define fin(i,s,n) for(auto i = s; i < n; ++i) #define fine(i,s,n) for(auto i = s; i <= n; ++i) #define pb push_back #define eb emplace_back #define x first #define y second #define all(x) (x).begin(),(x).end() #define chkmin(a,b) a = min(a,b) #define chkmax(a,b) a = max(a,b) using stdvec = vector<int>; using ii = pair<int,int>; using vi = vector<int>; using vvi = vector<vi>; using vii = vector<ii>; #define sz(a) int((a).size()) const int maxn = 5005; vi g[maxn]; int vis[maxn]; bool p[maxn], c[maxn]; void dfs(int u) { if(vis[u]) return; if(c[u]) { vis[u] = 1; return; } vis[u] = -2; for(int v : g[u]) if(!vis[v]) dfs(v); if(p[u]==1) { vis[u] = -1; for(int v : g[u]) if(vis[v]==1) { vis[u] = 1; return; } } else { vis[u] = 1; for(int v : g[u]) if(vis[v]==-1) {vis[v] = -1; return; } } } vi who_wins(vi a, vi r, vi u, vi v) { int n = a.size(),m = u.size(); fin(i,0,m) g[u[i]].pb(v[i]); fin(i,0,n) p[i] = a[i], c[i] = r[i]; vi res(n); fin(i,0,n) { memset(vis,0,sizeof vis); dfs(i); res[i] = vis[i]>0; } return res; }
#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...