제출 #1135333

#제출 시각아이디문제언어결과실행 시간메모리
1135333alterio늑대인간 (IOI18_werewolf)C++20
0 / 100
82 ms10564 KiB
#include "werewolf.h" #include <bits/stdc++.h> using namespace std; const int mxn = 3e3 + 10; vector<int> g[mxn]; struct State { int pos, lastT; bool transform; }; bool pos(int start, int end, int l, int r) { bool visited[mxn]; memset(visited, 0, sizeof(visited)); queue<State> q; q.push({start, (start <= r), 0}); visited[start] = 1; while (q.size()) { auto cur = q.front(); q.pop(); if (cur.transform && cur.pos > r) continue; if (!cur.transform && cur.pos < l) continue; if (cur.pos == end) return (cur.transform || cur.lastT); for (auto x : g[cur.pos]) { if (!visited[x]) { if (cur.transform) { if (x <= r) { visited[x] = 1; q.push({x, 0, 1}); } } else { if (x >= l) { visited[x] = 1; if (x <= r) q.push({x, 1, 0}); else q.push({x, 0, 0}); } else { if (cur.lastT) { q.push({x, 0, 1}); visited[x] = 1; } } } } } } return 0; } 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(); vector<int> A(Q); for (int i = 0; i < N - 1; i++) { g[X[i]].push_back(Y[i]); g[Y[i]].push_back(X[i]); } for (int i = 0; i < Q; i++) A[i] = pos(S[i], E[i], L[i], R[i]); return A; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...