Submission #641135

#TimeUsernameProblemLanguageResultExecution timeMemory
641135ggohToy Train (IOI17_train)C++14
0 / 100
2081 ms1492 KiB
#include "train.h" #include<bits/stdc++.h> using namespace std; #define sz(v) ((int)(v).size()) int n,m,dif,ch[5005],out[5005]; vector<int>G[5005],rev[5005]; vector<int>A,R,T; void f(int p) { queue<int>Q; if(p==1) { for(int i=0;i<n;i++) { if(ch[i])Q.push(i); out[i]=sz(G[i]); } while(!Q.empty()) { int q=Q.front();Q.pop(); for(auto &k:rev[q]) { out[k]--; if(!ch[k]) { if(A[k] || out[k]==0) { ch[k]=1; Q.push(k); } } } } } else { for(int i=0;i<n;i++) { if(!ch[i])Q.push(i); out[i]=sz(G[i]); } while(!Q.empty()) { int q=Q.front();Q.pop(); for(auto &k:rev[q]) { out[k]--; if(ch[k]) { if(!A[k] || out[k]==0) { ch[k]=0; Q.push(k); dif=1; } } } } } } void g() { while(1) { f(0); if(!dif)break; for(int i=0;i<n;i++)if(!R[i])ch[i]=0; f(1); } } vector<int> who_wins(vector<int> a, vector<int> r, vector<int> u, vector<int> v) { n=sz(a);m=sz(u); vector<int> res(n); A=a;R=r; for(int i=0;i<m;i++) { G[u[i]].push_back(v[i]); rev[v[i]].push_back(u[i]); } for(int i=0;i<n;i++)ch[i]=R[i]; f(1); g(); for(int i=0;i<n;i++)res[i]=ch[i]; return res; }
#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...