Submission #826236

#TimeUsernameProblemLanguageResultExecution timeMemory
826236vnm06Toy Train (IOI17_train)C++14
11 / 100
566 ms1748 KiB
#include<bits/stdc++.h> #include "train.h" using namespace std; int n, m; bool isC[5005], used[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) { 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...