제출 #1195691

#제출 시각아이디문제언어결과실행 시간메모리
1195691Aviansh장난감 기차 (IOI17_train)C++20
0 / 100
171 ms1404 KiB
#include "train.h"
#include <bits/stdc++.h>

using namespace std;
bool k = 0;
void cyc(int st, vector<int>g[], bool vis[], int orig){
    vis[st]=1;
    if(st==orig){
        k=1;
    }
    for(int i : g[st]){
        if(vis[i])
            continue;
        cyc(i,g,vis,orig);
    }
}

bool ch = 0;

void check(int st, vector<int>g[],bool vis[], bool val[]){
    vis[st]=1;
    if(val[st])
        ch=1;
    for(int i : g[st]){
        if(vis[i])
            continue;
        check(i,g,vis,val);
    }
}

vector<int> who_wins(vector<int> a, vector<int> r, vector<int> u, vector<int> v) {
    vector<int>ans;
    int n = a.size();
    int m = u.size();
    for(int i : a){
        assert(i);
    }
    vector<int>g[n];
    for(int i = 0;i<m;i++){
        g[u[i]].push_back(v[i]);
    }
    bool valid[n];
    fill(valid,valid+n,0);
    bool vis[n];
    for(int i = 0;i<n;i++){
        if(r[i]){
            k=0;
            fill(vis,vis+n,0);
            cyc(i,g,vis,i);
            if(k)
                valid[i]=1;
        }
    }
    for(int i = 0;i<n;i++){
        ch=0;
        fill(vis,vis+n,0);
        check(i,g,vis,valid);
        ans.push_back(ch);
    }
    return ans;
}
#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...