This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
// 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 time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |