This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#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 time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |