Submission #1252868

#TimeUsernameProblemLanguageResultExecution timeMemory
1252868aren_danceToy Train (IOI17_train)C++20
27 / 100
725 ms1408 KiB
#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=0;i<n;++i){ if(a[i]!=0){ fx=0; } if(a[i]!=1){ fx2=0; } } 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=0;i<n;++i){ answ.push_back(dfs4(i)); } return answ; }
#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...