Submission #1225628

#TimeUsernameProblemLanguageResultExecution timeMemory
1225628nicolo_010늑대인간 (IOI18_werewolf)C++20
15 / 100
4094 ms43936 KiB
#pragma GCC optimize("Ofast") #include <bits/stdc++.h> #include "werewolf.h" using namespace std; using ll = long long; using pii = pair<int, int>; #define rep(i, k, n) for (int i = k; i < n; i++) template<typename T> using v = vector<T>; const int MOD = 1e9+7; v<v<int>> adj; v<v<bool>> vis; int l, r; bool can; int e; bool check(int x, int t) { if (t == 0) { return (x >= l); } else { return x <= r; } } void dfs(int n, int t) { vis[n][t] = true; if (n == e) can = true; for (auto x : adj[n]) { if (vis[x][t] == false && check(x, t)) { dfs(x, t); } if (t == 0 && l <= n && n <= r) { if (vis[x][1] == false && check(x, 1)) dfs(x, 1); } } } v<int> check_validity(int N, v<int> X, v<int> Y, v<int> S, v<int> E, v<int> L, v<int> R) { int n = N; adj.resize(n); int m = X.size(); rep(i, 0, m){ int a = X[i], b = Y[i]; adj[a].push_back(b); adj[b].push_back(a); } int q = L.size(); v<int> ans(q); rep(i, 0, q) { vis.assign(n, v<bool>(2, false)); l = L[i], r = R[i]; e = E[i]; can = false; dfs(S[i], 0); if (can) ans[i] = 1; else ans[i] = 0; } 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...