// mrrrow mnyaa ;3c
// go play vivid/stasis! it's a really awesome free game on steam
int parent[1500];
int used[1500];
int n, calls_left, components;
void initialize(int N) {
n = N;
calls_left = n * (n - 1) / 2 + 1;
components = n;
for (int i = 0; i < n; i++) parent[i] = i, used[i] = n - 1;
}
int get(int i) {
if (parent[i] == i) return i;
return parent[i] = get(parent[i]);
}
void merge(int a, int b) {
a = get(a), b = get(b);
if (a == b) return;
parent[a] = b;
components--;
}
int hasEdge(int u, int v) {
calls_left--;
used[u]--, used[v]--;
if (used[u] == 0 || used[v] == 0 || components > calls_left) {
merge(u, v);
return true;
}
return false;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |