Submission #826261

#TimeUsernameProblemLanguageResultExecution timeMemory
826261vnm06Toy Train (IOI17_train)C++14
11 / 100
198 ms1540 KiB
#include<bits/stdc++.h> #include "train.h" using namespace std; int n, m; bool isC[5005], used[5005]; bool badv[5005]; vector<int> gr[5005], rev_gr[5005]; void dfs(int v) { int brs=gr[v].size(); for(int i=0; i<brs; i++) { int nv=gr[v][i]; if(used[nv]) continue; used[nv]=1; dfs(nv); } } vector<int> ans; void dfs2(int v) { ans[v-1]=1; int brs=rev_gr[v].size(); for(int i=0; i<brs; i++) { int nv=rev_gr[v][i]; if(ans[nv-1]) continue; dfs2(nv); } } std::vector<int> who_wins(std::vector<int> a, std::vector<int> r, std::vector<int> u, std::vector<int> v) { if(r[0]==1) { n=a.size(); ans.resize(n); for(int i=0; i<n; i++) ans[i]=0; m=u.size(); for(int i=0; i<n; i++) { if(r[i]) {isC[i+1]=1; badv[i+1]=1;} } for(int i=0; i<m; i++) { gr[u[i]+1].push_back(v[i]+1); rev_gr[v[i]+1].push_back(u[i]+1); } for(int t=1; t<=n; t++) { for(int i=1; i<=n; i++) { if(!badv[i]) { bool fl0=0; int brs=gr[i].size(); for(int j=0; j<brs; j++) if(!badv[gr[i][j]]) fl0=1; if(!fl0) badv[i]=1; } } } for(int k=1; k<=n; k++) { if(!badv[k]) dfs2(k); } for(int k=0; k<n; k++) ans[k]=1-ans[k]; } else { n=a.size(); ans.resize(n); for(int i=0; i<n; i++) ans[i]=0; m=u.size(); for(int i=0; i<n; i++) if(r[i]) isC[i+1]=1; for(int i=0; i<m; i++) { gr[u[i]+1].push_back(v[i]+1); rev_gr[v[i]+1].push_back(u[i]+1); } for(int i=1; i<=n; i++) { if(isC[i]) { dfs(i); if(!used[i]) isC[i]=0; memset(used, 0, sizeof(used)); } } for(int i=1; i<=n; i++) { if(isC[i]) dfs2(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...