Submission #1363273

#TimeUsernameProblemLanguageResultExecution timeMemory
1363273toma_ariciu게임 (IOI14_game)C++20
15 / 100
1 ms344 KiB
#include "game.h"

const int maxN = 1505;

int N;
int boss[maxN];
int edgesLeft[maxN][maxN];

void initialize(int n) {
    N = n;
    for (int i = 0; i < N; i++) {
        boss[i] = i;
    }
    for (int i = 0; i < N; i++) {
        for (int j = 0; j < N; j++) {
            edgesLeft[i][j] = (i != j);
        }
    }
}

int hasEdge(int u, int v) {
    u = boss[u];
    v = boss[v];
    if (u == v) {
        return false;
    }
    if (edgesLeft[u][v] > 1) {
        edgesLeft[u][v]--;
        edgesLeft[v][u]--;
        return false;
    }
    boss[v] = u;
    for (int i = 0; i < N; i++) {
        if (boss[i] != i || i == u) {
            continue;
        }
        edgesLeft[u][i] += edgesLeft[v][i];
        edgesLeft[i][u] += edgesLeft[i][v];
    }
    return true;
}
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...