Submission #587901

#TimeUsernameProblemLanguageResultExecution timeMemory
587901FatihSolakGame (IOI14_game)C++17
100 / 100
351 ms19688 KiB
#include "game.h"
#include <bits/stdc++.h>
#define N 1505
using namespace std;
int par[N];
int out[N][N];
int n;
int find(int a){
    if(a == par[a])return a;
    return par[a] = find(par[a]);
}
void initialize(int _n) {
    n = _n;
    for(int i = 0;i<n;i++){
        for(int j = 0;j<n;j++){
            if(i == j)continue;
            out[i][j] = 1;
        }
        par[i] = i;
    }
}

int hasEdge(int u, int v) {
    u = find(u);
    v = find(v);
    if(u == v)return 1;
    out[u][v]--;
    out[v][u]--;
    if(out[u][v] == 0){
        for(int i = 0;i<n;i++){
            out[i][v] += out[i][u];
            out[v][i] += out[u][i];
        }
        par[u] = v;
        return 1;
    }
    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...