Submission #406816

#TimeUsernameProblemLanguageResultExecution timeMemory
406816daniel920712Toy Train (IOI17_train)C++14
0 / 100
1029 ms25488 KiB
#include "train.h" using namespace std; vector < int > Next[5005],Next2[5005],ans,P,W; bool have1[5005][5005]; bool can[5005]; bool have2[5005]; bool F(int st,int here,int deg) { int t=1-W[here]; if(here==st&&deg) return 1; if(have1[st][here]) return can[here]; have1[st][here]=1; for(auto i:Next[here]) { t=F(st,i,deg+1); if(W[here]==t) t=1-t; } can[here]=t; return t; } void F2(int here) { if(have2[here]) return; have2[here]=1; for(auto i:Next2[here]) F2(i); } vector < int > who_wins(vector < int > who, vector < int > power, vector < int > u, vector < int > v) { P=power; W=who; int N=who.size(),M=u.size(),i; for(i=0;i<N;i++) ans.push_back(0); for(i=0;i<M;i++) Next[u[i]].push_back(v[i]); for(i=0;i<M;i++) Next2[v[i]].push_back(u[i]); for(i=0;i<N;i++) if(power[i]) F(i,i,0); for(i=0;i<N;i++) if(can[i]) F2(i); for(i=0;i<N;i++) ans[i]=have2[i]; return ans; }
#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...