Submission #1195856

#TimeUsernameProblemLanguageResultExecution timeMemory
1195856clementine늑대인간 (IOI18_werewolf)C++20
15 / 100
4094 ms26136 KiB
#include "werewolf.h"
#include<bits/stdc++.h>
using namespace std;

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

void humanspan(int u, int l)
{
    hvisited[u] = true;
    //cout << "hu " << u << '\n';
    for(auto v: graph[u])
    {
        if(!hvisited[v] && v >= l)
        {
            humanspan(v, l);
        }
    }
}

void wolfspan(int u, int l, int r)
{
    visited[u] = true;
    //cout << "wu " << u << '\n';
    for(auto v: graph[u])
    {
        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;
        hvisited[i] = false;
    }
    humanspan(s, l);
    wolfspan(e, l, r);
    for(int i = l; i <=r; i ++)
    {
        if(visited[i]  && hvisited[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) 
{
    int Q = S.size();
    vector<int> A(Q, 0);
    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...