Submission #423666

#TimeUsernameProblemLanguageResultExecution timeMemory
423666PbezzWerewolf (IOI18_werewolf)C++14
15 / 100
4041 ms41868 KiB
#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 timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...