Submission #1043002

#TimeUsernameProblemLanguageResultExecution timeMemory
1043002thatsgonzalezWerewolf (IOI18_werewolf)C++14
15 / 100
166 ms51840 KiB
#include <bits/stdc++.h> using namespace std; const int nmax = 1e5+100; vector<vector<int>> g; bitset <nmax> vis1, vis2; bool res = false; void dfs(int node, int l, int r, bool estado){ if(!estado and node<l) return; if(estado and node>r) return; /*if(!estado)*/ vis1[node] = 1; //else vis2[node] = 1; for(auto &x: g[node]){ if(vis1[x] /*and !estado*/) continue; //if(vis2[x] and estado) continue; /*if(x>=l and x<=r and !estado){ dfs(x,endpoint,l,r,estado); dfs(x,endpoint,l,r,!estado); } else{*/ dfs(x,l,r,estado); //} } } 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(); int M = X.size(); std::vector<int> ans(Q,0); g.resize(N); for(int i = 0; i<M; i++){ g[X[i]].push_back(Y[i]); g[Y[i]].push_back(X[i]); } bitset<nmax> a,b; for(int q = 0; q<Q; q++){ res = false; dfs(S[q],L[q],R[q],0); a = vis1; vis1.reset(); dfs(E[q],L[q],R[q],1); b = vis1; vis1.reset(); for(int i = 0; i<N; i++){ if(a[i] and b[i]) { res = true; break; } } ans[q] = res; //vis2.reset(); } g.clear(); return ans; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...