Submission #416350

#TimeUsernameProblemLanguageResultExecution timeMemory
416350AmineTrabelsiWerewolf (IOI18_werewolf)C++14
0 / 100
4041 ms37104 KiB
#include "werewolf.h" #include <bits/stdc++.h> using namespace std; const int Nx = 200000; vector<int> gr[Nx]; struct node{ int x; bool form; // 0 human 1 werewolf node(){} node(int _x,bool _form){ x = _x; form = _form; } }; 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(); int M = X.size(); vector<int> ans(Q,0); for(int i=0;i<M;i++){ gr[X[i]].push_back(Y[i]); gr[Y[i]].push_back(X[i]); } for(int i=0;i<Q;i++){ int s = S[i],e = E[i], l = L[i], r = R[i]; queue<node> q; vector<vector<bool>> vis(N+1,vector<bool>(3,0)); q.push(node(s,0)); while(!q.empty()){ node p = q.front(); q.pop(); if(vis[p.x][p.form] || (p.form && p.x > r) || (!p.form && p.x < l))continue; vis[p.x][p.form] = 1; for(auto u:gr[p.x]){ if(p.form){ if(u <= r && !vis[u][1]){ q.push({u,1}); } }else{ if(p.x >= l && p.x <= r && u <= r && !vis[u][1]){ q.push({u,1}); } if(u >= l && !vis[u][0]){ q.push({u,0}); } } } } ans[i] = vis[e][1]; } 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...