Submission #1222658

#TimeUsernameProblemLanguageResultExecution timeMemory
1222658colossal_pepeWerewolf (IOI18_werewolf)C++20
15 / 100
4094 ms31956 KiB
#include "werewolf.h"
#include <bits/stdc++.h>
using namespace std;

int n, m, q;

vector<vector<int>> g;

void dfs(int u, int x, int ineq, vector<bool> &vis) {
    vis[u] = 1;
    for (int v : g[u]) {
        if (v >= x == ineq and not vis[v]) dfs(v, x, ineq, vis);
    }
}

int solve(int s, int e, int l, int r) {
    vector<bool> vis1(n, 0), vis2(n, 0);
    dfs(s, l, 1, vis1);
    dfs(e, r + 1, 0, vis2);
    for (int i = l; i <= r; i++) {
        if (vis1[i] and vis2[i]) return 1;
    }
    return 0;
}

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 = X.size();
    q = S.size();
    g.resize(n);
    for (int i = 0; i < m; i++) {
        g[X[i]].push_back(Y[i]);
        g[Y[i]].push_back(X[i]);
    }
    vector<int> ret(q);
    for (int i = 0; i < q; i++) {
        ret[i] = solve(S[i], E[i], L[i], R[i]);
    }
    return ret;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...