Submission #747031

#TimeUsernameProblemLanguageResultExecution timeMemory
747031danikoynovToy Train (IOI17_train)C++14
0 / 100
1490 ms1532 KiB
#include <bits/stdc++.h> using namespace std; typedef long long ll; const int maxn = 5010; int n, m, a[maxn], r[maxn], cycle[maxn], nxt[maxn], from[maxn], rem[maxn], add[maxn]; vector < int > g[maxn]; int tf, used[maxn]; int dfs(int v) { used[v] = 1; int sum = 0; for (int u : g[v]) { if (!used[u]) { from[u] = v; sum += dfs(u); } else { if (used[u] == 1) { //cycle[v] = 1; sum ++; if (from[u] != -1) rem[from[u]] ++; } } } sum -= rem[v]; if (sum > 0) cycle[v] = 1; used[v] = 2; return sum; } 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 < n; i ++) a[i] = A[i]; for (int i = 0; i < n; i ++) r[i] = R[i]; for (int i = 0; i < m; i ++) { g[U[i]].push_back(V[i]); } vector < int > res(n, 0); for (int i = 0; i < n; i ++) { for (int j = 0; j < n; j ++) used[j] = 0, cycle[j] = 0; from[i] = -1; dfs(i); for (int j = 0; j < n; j ++) if (cycle[j] && r[j]) res[i] = 1; } return res; }
#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...