Submission #291051

#TimeUsernameProblemLanguageResultExecution timeMemory
291051SaboonToy Train (IOI17_train)C++17
0 / 100
725 ms1144 KiB
// Subtask 4 #include "train.h" #include <bits/stdc++.h> using namespace std; const int maxn = 5000 + 10; int n, m; vector<int> g[maxn], r; bool visited[maxn]; vector<int> who_wins(vector<int> a, vector<int> r, vector<int> u, vector<int> v) { n = a.size(), m = u.size(); for (int i = 0; i < m; i++) g[u[i]].push_back(v[i]); vector<int> dp(n), pd(n); for (int i = 0; i < n; i++){ dp[i] = r[i]; pd[i] = 0; } for (int t = 0; t < n; t++){ for (int i = 0; i < n; i++){ if (r[i]) continue; if (a[i] == 1){ for (auto j : g[i]) dp[i] |= dp[j]; } else{ int tmp = 1; for (auto j : g[i]) tmp &= dp[j]; dp[i] = tmp; } } } for (int i = 0; i < n; i++) if (r[i] == 1) for (int j = 0; j < m; j++) if (u[j] == i and dp[v[j]]) pd[i] = 1; for (int t = 0; t < n; t++){ for (int i = 0; i < n; i++){ if (a[i] == 1){ for (auto j : g[i]) pd[i] |= pd[j]; } } } for (int t = 0; t < n; t++){ for (int i = 0; i < n; i++){ if (a[i] == 1){ for (auto j : g[i]) pd[i] |= dp[j]; } else{ int tmp = 1; for (auto j : g[i]) tmp &= pd[j]; pd[i] = tmp; } } } return pd; }
#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...