이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#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 time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |