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;
#define N ((int)100)
int n,m,arr[N];
bool e[N][N],mark[N];
vector <int> now;
bool solve(vector <int> &a,vector <int> &r)
{
int x=now.back();
bool flg=0;
for(int i=(int)now.size()-1;i>=0;i--)
{
flg|=r[now[i]];
// cout<<flg<<" "<<now[i]<<" "<<e[x][now[i]]<<"\n";
if(e[x][now[i]] && flg==a[x])return a[x];
}
srand(time(NULL));
random_shuffle(arr,arr+n);
for(int j=0;j<n;j++)
{
int i=arr[j];
if(mark[i] || !e[x][i])continue;
now.push_back(i);mark[i]=1;
if(solve(a,r)==a[x])
{
now.pop_back();mark[i]=0;
return a[x];
}
now.pop_back();mark[i]=0;
}
return 1-a[x];
}
vector<int> who_wins(vector<int> a,vector<int> r,vector<int> u,vector<int> v)
{
n=a.size();m=u.size();
for(int i=0;i<n;i++)arr[i]=i;
for(int i=0;i<m;i++)e[u[i]][v[i]]=1;
vector <int> res;
for(int i=0;i<n;i++)
{
now.push_back(i);mark[i]=1;
res.push_back(solve(a,r));
now.pop_back();mark[i]=0;
}
return res;
}
# | 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... |