Submission #1208488

#TimeUsernameProblemLanguageResultExecution timeMemory
1208488HanksburgerToy Train (IOI17_train)C++17
11 / 100
1605 ms1600 KiB
#include "train.h" #include <bits/stdc++.h> using namespace std; vector<int> adj[5005], rev[5005]; vector<int> who_wins(vector<int> a, vector<int> r, vector<int> U, vector<int> V) { int n=a.size(); vector<int> cnt(n, 0), ok(n, 0), ans(n, 0); for (int i=0; i<U.size(); i++) { adj[U[i]].push_back(V[i]); rev[V[i]].push_back(U[i]); } queue<int> q; for (int i=0; i<n; i++) { if (r[i]) { ok[i]=1; q.push(i); } } while (!q.empty()) { int u=q.front(); q.pop(); for (int v:rev[u]) { if (ok[v]) continue; if (a[v] || ++cnt[v]==adj[v].size()) { ok[v]=1; q.push(v); } } } for (int j=0; j<n; j++) { for (int i=0; i<n; i++) { cnt[i]=0; ans[i]=1-a[i]; for (int v:adj[i]) if (a[i]^ok[v]^1) ans[i]=a[i]; if (ans[i]) q.push(i); } while (!q.empty()) { int u=q.front(); q.pop(); for (int v:rev[u]) { if (ans[v]) continue; if (a[v] || ++cnt[v]==adj[v].size()) { ans[v]=1; q.push(v); } } } if (j<n-1) for (int i=0; i<n; i++) ok[i]=ans[i], ans[i]=0; } 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...