Submission #1195834

#TimeUsernameProblemLanguageResultExecution timeMemory
1195834clementineWerewolf (IOI18_werewolf)C++20
0 / 100
2411 ms25664 KiB
#include "werewolf.h"
#include<bits/stdc++.h>
using namespace std;

vector<int> graph[200005];
bool visited[200005];
bool result = false;

void humanspan(int u, int l)
{
    visited[u] = true;
    for(auto v: graph[u])
    {
        if(!visited[v] && v >= l)
        {
            humanspan(v, l);
        }
    }
}

void wolfspan(int u, int l, int r)
{
    visited[u] = true;
    for(auto v: graph[u])
    {
        if(visited[v] && v <=r && v >=l)
        {
            result = true;
            return;
        }
        if(!visited[v] && v <=r)
        {
            wolfspan(v, l, r);
        }
    }
}
int solve(int n, int s, int e, int l, int r)
{
    result = false;
    for(int i = 0; i < n; i ++)
    {
        visited[i] = false;
    }
    humanspan(s, l);
    wolfspan(e, l, r);
    return result;
}

vector<int> check_validity(int N, vector<int> X, vector<int> Y,
                                vector<int> S, vector<int> E,
                                vector<int> L, vector<int> R) 
{
    int Q = S.size();
    vector<int> A(Q);
    for(int i = 0; i < X.size(); i ++)
    {
        graph[X[i]].push_back(Y[i]);
        graph[Y[i]].push_back(X[i]);
    }
    for(int i = 0; i < Q; i ++)
    {
        A[i] = solve(N, S[i], E[i], L[i], R[i]);
    }
    return A;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...