// mrrrow mnyaa ;3c
// go play vivid/stasis! it's a really awesome free game on steam
int parent[1500];
int used[1500][1500];
int n;
void initialize(int N) {
n = N;
for (int i = 0; i < n; i++) {
parent[i] = i;
for (int j = 0; j < n; j++) used[i][j] = i != j;
}
}
int get(int i) {
if (parent[i] == i) return i;
return parent[i] = get(parent[i]);
}
void merge(int a, int b) {
if (a == b) return;
parent[b] = a;
for (int i = 0; i < n; i++) used[a][i] += used[b][i], used[i][a] += used[i][b], used[i][b] = 0;
}
int hasEdge(int u, int v) {
u = get(u), v = get(v);
used[u][v]--, used[v][u]--;
if (used[u][v] == 0 || used[v][u] == 0) {
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... |