Submission #1189940

#TimeUsernameProblemLanguageResultExecution timeMemory
1189940MatteoArcari늑대인간 (IOI18_werewolf)C++20
15 / 100
4094 ms21436 KiB
#include "werewolf.h"
#include <bits/stdc++.h>
using namespace std;
using vi = vector<int>;

vi check_validity(int n, vi x, vi y, vi s, vi e, vi l, vi r) {
    int q = s.size();
    int m = x.size();
    vector<vi> adj(n);
    for (int i = 0; i < m; i++) {
        adj[x[i]].push_back(y[i]);
        adj[y[i]].push_back(x[i]);
    }

    vi ans(q);

    for (int i = 0; i < q; i++) {
        vector<bool> visL(n), visR(n);
        queue<int> qu;
        qu.push(s[i]); visL[s[i]] = 1; 
        while (!qu.empty()) {
            int j = qu.front();
            qu.pop();
            for (int k: adj[j]) {
                if (k < l[i]) continue;
                if (visL[k]) continue;
                visL[k] = 1;
                qu.push(k); 
            }
        }
        qu.push(e[i]); visR[e[i]] = 1; 
        while (!qu.empty()) {
            int j = qu.front();
            qu.pop();
            for (int k: adj[j]) {
                if (k > r[i]) continue;
                if (visR[k]) continue;
                visR[k] = 1;
                qu.push(k); 
            }
        }
        for (int j = l[i]; j <= r[i]; j++) {
            if (visL[j] && visR[j]) {
                ans[i] = 1;
                break;
            }
        }
    }

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