Submission #1367793

#TimeUsernameProblemLanguageResultExecution timeMemory
1367793asli_bg늑대인간 (IOI18_werewolf)C++20
0 / 100
4091 ms31936 KiB
#include <bits/stdc++.h>
using namespace std;

//#define int long long

#define fi first
#define se second

#define FOR(i,a) for(int i=0;i<(a);i++)
#define FORE(i,a,b) for(int i=(a);i<(b);i++)

#define sp <<' '<<

#define mid (l+r)/2

#define all(x) x.begin(),x.end()
#define carp(a,b) ((a%MOD)*(b%MOD))%MOD
#define topla(a,b) ((a%MOD)+(b%MOD))%MOD

#define pb push_back

#define DEBUG(x) cout<<#x sp x<<endl;
#define cont(x) for(auto el:x) cout<<el<<' ';cout<<endl;
#define contp(x) for(auto el:x) cout<<el.fi<<'-'<<el.se<<' ';cout<<endl;

typedef vector<int> vi;
typedef pair<int,int> pii;
typedef vector<pii> vii;
typedef vector<bool> vb;
typedef long long ll;
typedef vector<ll> vll;
typedef pair<ll,ll> pll;


const int MAXN=2e5+6;
const int INF=1e9+7;

#include "werewolf.h"

int n,q;

int curl,curr;

bool f;
bool vis[MAXN],vis2[MAXN];
vi adj[MAXN];

void dfs(int nd){
    if (f) vis[nd]=true;
    else vis2[nd]=true;

    for(auto kom:adj[nd]){
        if(f and vis[kom]) continue;
        if(!f and vis2[kom]) continue;

        if(f and nd>=curl) dfs(kom);
        if(!f and nd<=curr) dfs(kom);
    }
}

vi check_validity(int N, vi x, vi y, vi S, vi E, vi L, vi R){
    //line
    n=N;
    FOR(i,x.size()){
        x[i]++;y[i]++;
        adj[x[i]].pb(y[i]);
        adj[y[i]].pb(x[i]);
    }

    q=S.size();

    vi ans;

    FOR(i,q){
        int bas=S[i]+1;
        int son=E[i]+1;

        curl=L[i]+1;
        curr=R[i]+1;

        f=true;
        dfs(bas);
        f=false;
        dfs(son);

        bool pos=false;
        FORE(i,1,n+1){
            if(vis[bas] and vis2[son] and vis[i] and vis2[i]){
                pos=true;
            }
            vis[i]=vis2[i]=false;
        }

        if(pos) ans.pb(1);
        else ans.pb(0);
    }

    return ans;


    /*int Q = S.size();
    vi A(Q);
    for (int i = 0; i < Q; ++i) {
    A[i] = 0;
    }
    return A;*/
}
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...