Submission #314318

#TimeUsernameProblemLanguageResultExecution timeMemory
314318amunduzbaevWerewolf (IOI18_werewolf)C++14
15 / 100
311 ms43492 KiB
//#include "grader.cpp" #include "werewolf.h" #include <bits/stdc++.h> #define pb(n) push_back(n) using namespace std; const int N=3005; vector<vector<int>>edges; bool reached=0; int l, h, used1[N],used2[N]; void dfs1(int v){ used1[v]=1; for(auto x:edges[v]){ if(x<l||used1[x]) continue; dfs1(x); } } void dfs2(int v){ used2[v]=1; if(used1[v]&&used2[v]) { reached=1; return; } if(reached) return; for(auto x:edges[v]){ if(x>h||used2[x]) continue; if(reached) return; dfs2(x); } } vector<int> check_validity(int n, vector<int> X, vector<int> Y, vector<int> s, vector<int> e, vector<int> low, vector<int> high) { int q=s.size(),m=X.size(); edges.resize(n); for(int i=0;i<m;i++){ edges[X[i]].pb(Y[i]); edges[Y[i]].pb(X[i]); } vector<int>a(q); for(int i=0;i<q;i++){ l=low[i], h=high[i]; if(s[i]>=l) dfs1(s[i]); reached=0; if(e[i]<=h) dfs2(e[i]); a[i]=reached; memset(used1,0,sizeof(used1)); memset(used2,0,sizeof(used2)); } return a; } /* 6 6 3 5 1 1 2 1 3 3 4 3 0 5 2 4 2 1 2 4 2 2 2 5 4 3 4 */
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...