Submission #733368

#TimeUsernameProblemLanguageResultExecution timeMemory
733368t6twotwoToy Train (IOI17_train)C++17
5 / 100
2071 ms4164 KiB
#include "train.h" #include <bits/stdc++.h> using namespace std; vector<int> who_wins(vector<int> A, vector<int> R, vector<int> U, vector<int> V) { int N = A.size(); int M = U.size(); vector adj(N, vector<bool>(N)); for (int i = 0; i < M; i++) { adj[U[i]][V[i]] = 1; } vector<int> ans(N); for (int i = 0; i < N; i++) { vector<int> p; vector<bool> vis(N); auto dfs = [&](auto dfs, int x) -> int { p.push_back(x); vis[x] = 1; for (int y = 0; y < N; y++) { if (adj[x][y]) { if (!vis[y]) { if (dfs(dfs, y) == A[x]) { return A[x]; } } else { int cyc = 0; for (int i = p.size() - 1; i >= 0; i--) { cyc |= R[p[i]]; if (p[i] == y) { break; } } if (A[x] == cyc) { return A[x]; } } } } vis[x] = 0; p.pop_back(); return 1 - A[x]; }; ans[i] = dfs(dfs, 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...