#include <bits/stdc++.h>
#include "train.h"
using namespace std;
const int N=5001;
vector<int> g[N];
bool vis[N];
bool f[N];
bool lav[N];
bool dfs(int node){
vis[node]=1;
bool an=0;
if(lav[node]){
return 1;
}
for(auto i:g[node]){
if(vis[i]){
continue;
}
an=an|dfs(i);
}
return an;
}
void dfs2(int node,int root){
vis[node]=1;
for(auto i:g[node]){
if(i==root){
lav[root]=1;
return;
}
if(!vis[i]){
dfs2(i,root);
}
}
}
void dfs3(int node,int root){
vis[node]=1;
for(auto i:g[node]){
if(i==root){
lav[root]=1;
}
if(!vis[i] && !f[i]){
dfs3(i,root);
}
}
}
bool dfs4(int node){
if(g[node].size()==1){
if(g[node][0]!=node){
return dfs4(node-1);
}
else{
return f[node];
}
}
//if(g[node].size()==2){
if(f[node]^lav[node]){
return dfs4(node-1);
}
return f[node];
//}
}
vector<int> who_wins(std::vector<int> a, std::vector<int> r, std::vector<int> u, std::vector<int> v) {
int n=a.size();
int m=u.size();
bool fx=1;
bool fx2=1;
for(int i=1;i<=n;++i){
if(a[i]!=0){
fx=0;
}
if(a[i]!=1){
fx2=1;
}
}
for(int i=0;i<m;++i){
g[u[i]].push_back(v[i]);
}
for(int i=0;i<n;++i){
f[i]=r[i];
}
if(fx2){
vector<int> answ;
for(int i=0;i<n;++i){
for(int j=0;j<n;++j){
vis[j]=0;
}
if(f[i]){
dfs2(i,i);
}
}
for(int i=0;i<n;++i){
for(int j=0;j<n;++j){
vis[j]=0;
}
answ.push_back(dfs(i));
}
return answ;
}
if(fx){
for(int i=0;i<n;++i){
for(int j=0;j<n;++j){
vis[j]=0;
}
if(!f[i]){
dfs3(i,i);
}
}
vector<int> answ;
for(int i=0;i<n;++i){
for(int j=0;j<n;++j){
vis[j]=0;
}
answ.push_back(dfs(i)^1);
}
return answ;
}
for(int i=1;i<=n;++i){
lav[i]=a[i];
}
for(int i=1;i<=n;++i){
f[i]=r[i];
}
vector<int> answ;
for(int i=1;i<=n;++i){
answ.push_back(dfs4(i));
}
return answ;
}
# | 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... |