Submission #297174

# Submission time Handle Problem Language Result Execution time Memory
297174 2020-09-11T10:22:53 Z Autoratch Toy Train (IOI17_train) C++14
0 / 100
11 ms 1792 KB
#include "train.h"
#include <bits/stdc++.h>
using namespace std;

const int N = 5000;

int n,m;
vector<int> adj[N],rev[N];
bool sm[N],nxt[N],lop[N];
bool visited[N],loop[N];
stack<int> st;
int id[N],idx;
vector<int> tmp;

void dfs(int u)
{
    if(visited[u]) return;
    visited[u] = true;
    for(int v : adj[u]) dfs(v);
    st.push(u);
}

void dfs2(int u)
{
    if(visited[u]) return;
    visited[u] = true;
    id[u] = idx;
    tmp.push_back(u);
    for(int v : rev[u]) dfs2(v);
}

void dfs3(int u)
{
    if(visited[id[u]]) return;
    visited[id[u]] = true;
    for(int v : adj[u]) 
    {
        dfs(v);
        lop[id[u]]|=lop[id[v]];
    }
}

std::vector<int> who_wins(std::vector<int> a, std::vector<int> r, std::vector<int> u, std::vector<int> v) 
{
    n = a.size(),m = u.size();
    for(int i = 0;i < m;i++)
    {
        adj[u[i]].push_back(v[i]);
        rev[v[i]].push_back(u[i]);
        if(u[i]==v[i]) sm[u[i]] = true;
        else nxt[u[i]] = true;
    }
    for(int i = 0;i < n;i++) if(!visited[i]) dfs(i);
    for(int i = 0;i < n;i++) visited[i] = 0;
    while(!st.empty())
    {
        int u = st.top();
        st.pop();
        if(visited[u]) continue;
        tmp.clear();
        dfs2(u);
        if(tmp.size()==1)
        {
            if(r[tmp[0]] and sm[tmp[0]]) lop[idx] = 1;
        }
        else
        {
            for(int x : tmp) if(r[x]) lop[idx] = 1;
        }
        idx++;
    }
    for(int i = 0;i < n;i++) visited[i] = false;
    for(int i = 0;i < n;i++) if(!visited[id[i]]) dfs3(i);
    vector<int> ans(n);
    for(int i = 0;i < n;i++) ans[i] = lop[id[i]];
    /*
    for(int i = n-1;i >= 0;i--)
    {
        if(!nxt[i] and !sm[i]){ ans[i] = 0; continue; }
        if(a[i] and r[i] and sm[i]) ans[i] = 1;
        else if(a[i]) 
        {
            if(nxt[i]) ans[i] = ans[i+1];
            else ans[i] = 0;
        }
        else 
        {
            if(!r[i] and sm[i]) ans[i] = 0;
            else if(sm[i] and !nxt[i]) ans[i] = 1;
            else if(!nxt[i]) ans[i] = 0;
            else ans[i] = ans[i+1];
        }
    }*/
    return ans;
}
# Verdict Execution time Memory Grader output
1 Incorrect 6 ms 1408 KB 3rd lines differ - on the 14th token, expected: '1', found: '0'
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 1 ms 640 KB 3rd lines differ - on the 8th token, expected: '0', found: '1'
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 9 ms 1792 KB Output is correct
2 Correct 9 ms 1792 KB Output is correct
3 Correct 11 ms 1792 KB Output is correct
4 Incorrect 11 ms 1792 KB 3rd lines differ - on the 13th token, expected: '1', found: '0'
5 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 9 ms 1536 KB 3rd lines differ - on the 11th token, expected: '1', found: '0'
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 11 ms 1792 KB 3rd lines differ - on the 2nd token, expected: '0', found: '1'
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 6 ms 1408 KB 3rd lines differ - on the 14th token, expected: '1', found: '0'
2 Halted 0 ms 0 KB -