Submission #747029

#TimeUsernameProblemLanguageResultExecution timeMemory
747029danikoynovToy Train (IOI17_train)C++14
0 / 100
2061 ms1444 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];
vector < int > g[maxn];
int tf, used[maxn];

void dfs(int v)
{
    used[v] = 1;
    for (int u : g[v])
    {
        if (!used[u])
        {
            from[u] = v;
            dfs(u);

        }
        else
        {
            if (used[u] == 1)
            {
                //cycle[v] = 1;
                int d = v;
                while(d != u)
                {
                    cycle[d] = 1;
                    d = from[d];
                }
                cycle[u] = 1;
            }

        }
    }
    used[v] = 2;
}
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;

        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...