Submission #964650

#TimeUsernameProblemLanguageResultExecution timeMemory
964650fve5Werewolf (IOI18_werewolf)C++17
0 / 100
117 ms19536 KiB
#include <bits/stdc++.h> #include "werewolf.h" using namespace std; vector<int> solve_naive( int N, int M, int Q, vector<int> X, vector<int> Y, vector<int> S, vector<int> E, vector<int> L, vector<int> R ) { vector<vector<int>> adj(N); for (int i = 0; i < M; i++) { adj[X[i]].push_back(Y[i]); adj[Y[i]].push_back(X[i]); } vector<int> ans(Q); for (int i = 0; i < Q; i++) { vector<array<bool, 2>> visited(N); queue<pair<int, bool>> q; q.emplace(S[i], 0); while (!q.empty()) { auto [node, st] = q.front(); q.pop(); if (visited[node][st]) continue; visited[node][st] = true; for (auto x: adj[node]) { if (!st && x >= L[i]) q.emplace(x, st); if (st && x <= R[i]) q.emplace(x, st); } if (L[i] <= node && node <= R[i]) q.emplace(node, !st); } ans[i] = visited[E[i]][1]; } return ans; } 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 M = X.size(); int Q = S.size(); if (N <= 3000 && M <= 6000 && Q <= 3000) { return solve_naive(N, M, Q, X, Y, S, E, L, R); } assert(false); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...