Submission #1146960

#TimeUsernameProblemLanguageResultExecution timeMemory
1146960BlockOG게임 (IOI14_game)C++20
100 / 100
217 ms15872 KiB
// 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 timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...