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<bits/stdc++.h>
using namespace std;
const int nmax=5e3+42;
int n;
vector< int > adj[nmax];
vector<int> ret;
bool rech[nmax];
bool ans=0,been[nmax];
void dfs(int node)
{
if(been[node])return;
if(rech[node])ans=1;
been[node]=1;
for(auto k:adj[node])
dfs(k);
}
vector<int> who_wins(vector<int> a, vector<int> r, vector<int> u, vector<int> v)
{
bool c1=1;
int m=u.size();
for(int i=0;i<m;i++)
{
adj[u[i]].push_back(v[i]);
if(v[i]-u[i]>1||v[i]-u[i]<0)c1=0;
}
n=a.size();
for(int i=0;i<n;i++)
rech[i]=r[i];
bool one=1;
for(auto k:a)
if(k!=1)one=0;
if(one)
{
for(int i=0;i<n;i++)
{
memset(been,0,sizeof(been));
ans=0;
dfs(i);
ret.push_back(ans);
}
}
if(c1)
{
ret={};
for(int i=0;i<n;i++)
{
int where=i;
while(1)
{
bool self=0;
for(auto k:adj[where])
if(k==where)self=1;
if(self==0)where++;
else if(a[where]==r[where])
{
ret.push_back(a[where]);
break;
}
else if(adj[where].size()==2)where++;
else
{
ret.push_back(!a[where]);
break;
}
}
}
}
return ret;
}
/*
int main()
{
for(auto k:who_wins({1,1,1},{0,0,1},{0,1,2},{1,0,2}))cout<<k<<endl;
}
*/
# | 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... |