This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include "werewolf.h"
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define pb push_back
typedef pair<ll,ll> pii;
const ll MAXN = 2e5+5;
const ll INF = 1e9+7;
vector<vector<ll>>adj(MAXN);
bool state[MAXN][2];
//state[i][0]==true means e possivel chegar a i enquanto human
int l,r,e;
void dfs(ll node, ll wolf){//cout<<node<<" "<<wolf<<endl;
state[node][wolf]=true;
//nao mudar nada
for(auto u:adj[node]){
if(state[u][wolf]==true)continue;
if(wolf==0){
if(u<l)continue;
dfs(u,wolf);
}else{
if(u>r)continue;
dfs(u,wolf);
}
}
if(wolf==0 && state[node][1]==false && node<=r){
state[node][1]=true;
wolf=1;
for(auto u:adj[node]){
if(state[u][wolf]==true)continue;
if(u>r)continue;
dfs(u,wolf);
}
}
}
std::vector<int> check_validity(int N,std::vector<int>X,std::vector<int> Y,
std::vector<int> S, std::vector<int> E,
std::vector<int> L, std::vector<int> R) {
int Q = S.size(),m=(int)X.size(), i,j;
for(i=0;i<m;i++){
adj[X[i]].pb(Y[i]);
adj[Y[i]].pb(X[i]);
}
int s;
std::vector<int> A(Q);
for(i=0;i<Q;i++){
s=S[i]; e=E[i]; l=L[i]; r=R[i];
for(j=0;j<N;j++){
state[j][0]=false; state[j][1]=false;
}
A[i]=0;
if(s>=l){
dfs(s,0);
if(state[e][1]==true)A[i]=1;
}
//cout<<endl<<endl;
}
return A;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |