제출 #812738

#제출 시각아이디문제언어결과실행 시간메모리
812738Dan4Life장난감 기차 (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; int vis[mxN], n, m; bool recur(int s){ vis[s]=1; v.pb(s); bool ok = 1; for(auto u : adj[s]){ if(!vis[u]){ if(a[s]){ if(recur(u)) return 1; ok = 0; } else ok&=recur(u); } else if(vis[u]==1){ int good = 0, pos = sz(v)-1; while(pos>=0 and v[pos]!=u){ if(r[v[pos]]) good=1; pos--; } if(r[u]) good=1; if(good and a[s]) return 1; if(!good and !a[s]) return 0; } } vis[s]=2; v.pop_back(); return ok; } vi who_wins(vi A, vi R, vi U, vi V) { 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...