Submission #760643

#TimeUsernameProblemLanguageResultExecution timeMemory
760643thinknoexitGame (IOI14_game)C++17
0 / 100
1 ms212 KiB
#include "game.h"
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
int ch[1505][1505];
int p[1505], a[1505];
int fr(int i) {
    if (p[i] == i) return i;
    return p[i] = fr(p[i]);
}
void initialize(int n) {
    for (int i = 1;i <= n;i++) {
        p[i] = i;
        a[i] = n - 1;
    }
}
int hasEdge(int u, int v) {
    u++, v++;
    if (u == v) return 0;
    if (ch[u][v]) {
        return ch[u][v] - 1;
    }
    int ans = 0;
    int pu = fr(u), pv = fr(v);
    if (pu == pv) ans = 1;
    else if (a[pu] == 0 || a[pv] == 0) {
        ans = 1;
        a[pu] += a[pv];
        p[pv] = pu;
    }
    else --a[pu], --a[pv], ans = 0;
    ch[u][v] = ch[v][u] = ans + 1;
    return ans;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...