Submission #393263

#TimeUsernameProblemLanguageResultExecution timeMemory
39326379brue늑대인간 (IOI18_werewolf)C++14
15 / 100
347 ms23880 KiB
#include <bits/stdc++.h>
#include "werewolf.h"

using namespace std;

typedef long long ll;

int n, m, q;
vector<int> ans;
vector<int> link[3002];
int visited[3002];

void dfs1(int x, int lim){
    visited[x] |= 1;
    for(auto y: link[x]){
        if(visited[y] & 1) continue;
        if(y < lim) continue;
        dfs1(y, lim);
    }
}

void dfs2(int x, int lim){
    visited[x] |= 2;
    for(auto y: link[x]){
        if(visited[y] & 2) continue;
        if(y > lim) continue;
        dfs2(y, lim);
    }
}

vector<int> check_validity(int N, vector<int> X, vector<int> Y, vector<int> S, vector<int> E, vector<int> L, vector<int> R) {
    n = N, m = (int)X.size(), q = (int)L.size();
    ans.resize(q);
    for(int i=0; i<m; i++){
        link[X[i]].push_back(Y[i]);
        link[Y[i]].push_back(X[i]);
    }

    for(int i=0; i<q; i++){
        memset(visited, 0, sizeof(visited));
        dfs1(S[i], L[i]);
        dfs2(E[i], R[i]);
        int smth = 0;
        for(int j=0; j<n; j++) smth = max(smth, visited[j]);
        ans[i] = (smth == 3);
    }
    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...