# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
1208493 | Hanksburger | Toy Train (IOI17_train) | C++17 | 1111 ms | 1580 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();
for (int i=0; i<U.size(); i++)
{
adj[U[i]].push_back(V[i]);
rev[V[i]].push_back(U[i]);
}
vector<int> pre(n, 0);
for (int j=0; j<n; j++)
{
vector<int> cnt(n, 0), ans(n, 0);
queue<int> q;
for (int i=0; i<n; i++)
{
if (!r[i])
continue;
if (!j)
ans[i]=1;
else
{
ans[i]=1-a[i];
for (int v:adj[i])
if (a[i]^pre[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)
return ans;
for (int i=0; i<n; i++)
pre[i]=ans[i];
}
}
Compilation message (stderr)
# | 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... |