#define _GLIBXX_DEBUG
#include "game.h"
#include <bits/stdc++.h>
using namespace std;
vector<int> mn, mx;
vector<vector<int>> gr, grr;
int kk;
void init(int n, int k) {
kk = k;
mn.assign(n, k + 1);
mx.assign(n, 0);
gr.assign(n, vector<int> (0));
grr.assign(n, vector<int> (0));
for (int i = 0; i < k; i++) {
mn[i] = i + 1;
mx[i] = i + 1;
}
}
int check_vert(int v);
int check_edge(int u, int v) {
if (mn[v] <= mx[u]) return 1;
if (mn[u] > mn[v]) {
mn[u] = mn[v];
if (check_vert(u)) return 1;
}
if (mx[v] < mx[u]) {
mx[v] = mx[u];
if (check_vert(v)) return 1;
}
return 0;
}
int check_vert(int v) {
if (v < kk) return 0;
if (mn[v] <= mx[v]) return 1;
for (auto &i : gr[v]) {
if (check_edge(v, i)) return 1;
}
for (auto &i : grr[v]) {
if (check_edge(i, v)) return 1;
}
return 0;
}
int add_teleporter(int u, int v) {
// return 1;
gr[u].push_back(v);
grr[v].push_back(u);
return check_edge(u, v);
}
# | 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... |