Submission #981703

#TimeUsernameProblemLanguageResultExecution timeMemory
981703crafticatGame (APIO22_game)C++17
30 / 100
4018 ms5936 KiB
#include <bits/stdc++.h> using namespace std; vector<vector<int>> g; vector<vector<int>> gr; constexpr int inf = 1e9; int K = 0; vector<int> toMin, fromMax; bool pos = true; void init(int n, int k) { g.resize(n + 1); gr.resize(n + 1); toMin.resize(n + 1,inf); fromMax.resize(n + 1,-1); K = k; for (int i = 0; i < k; ++i) { toMin[i] = i; fromMax[i] = i; } for (int i = 0; i < k - 1; ++i) { g[i].push_back(i + 1); gr[i + 1].push_back(i); } } vector<bool> vis; int dfs(int x) { vis[x] = true; int v = x < K ? x : inf; for (auto child : g[x]) { if (vis[child]) continue; v = min(v, dfs(child)); } return v; } int dfs2(int x) { vis[x] = true; int v = x < K ? x : -1; for (auto child : gr[x]) { if (vis[child]) continue; v = max(v, dfs2(child)); } return v; } int add_teleporter(int u, int v) { if (!pos) return 1; g[u].push_back(v); gr[v].push_back(u); vis.clear(); vis.resize(g.size()); int x = dfs(v); vis.clear(); vis.resize(g.size()); int y = dfs2(u); pos = x > y; return !pos; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...