Submission #1044582

#TimeUsernameProblemLanguageResultExecution timeMemory
1044582VMaksimoski008Werewolf (IOI18_werewolf)C++17
15 / 100
4067 ms43860 KiB
#include "werewolf.h" #include <bits/stdc++.h> using namespace std; const int maxn = 6e5 + 5; vector<int> graph[maxn]; int vis[maxn][2]; 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(), M = X.size(); vector<int> ans(Q); for(int i=0; i<M; i++) { X[i]++; Y[i]++; graph[X[i]].push_back(Y[i]); graph[Y[i]].push_back(X[i]); } for(int i=0; i<Q; i++) { S[i]++; E[i]++; L[i]++; R[i]++; queue<pair<int, int> > q; memset(vis, 0, sizeof(vis)); q.push({ S[i], 0 }); vis[S[i]][0] = 1; while(!q.empty()) { auto [u, t] = q.front(); q.pop(); if(t == 0) { if(u >= L[i] && u <= R[i] && !vis[u][1]) { vis[u][1] = 1; q.push({ u, 1 }); } } for(int &v : graph[u]) { if(vis[v][t]) continue; if(t == 0 && v < L[i]) continue; if(t == 1 && v > R[i]) continue; vis[v][t] = 1; q.push({ v, t }); } } ans[i] = vis[E[i]][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...