Submission #1207251

#TimeUsernameProblemLanguageResultExecution timeMemory
1207251GabrielGame (IOI14_game)C++17
100 / 100
422 ms15964 KiB
#include "game.h"
#include "bits/stdc++.h"
using namespace std;
vector<int> Aristas;
vector<int> r;
vector< vector<int> > Matriz;
int n;
int Buscar(int a){
    if(r[a] == a) return a;
    return r[a] = Buscar(r[a]);
}
void Unir(int a, int b){
    if(a > b) swap(a, b);
    a = Buscar(a);
    b = Buscar(b);
    for(int i = 0; i < n; i++){
        if(i != a and i != b){
            Matriz[a][i] += Matriz[b][i];
            Matriz[i][a] += Matriz[i][b];
        }
    }
    r[b] = a;
}
void initialize(int N){
    n = N;
    Matriz.assign(n, vector<int>(n, 1));
    for(int i = 0; i < n; i++){
        r.push_back(i);
        Matriz[i][i] = -0;
    }
}
int hasEdge(int u, int v){
    u = Buscar(u);
    v = Buscar(v);
    if(Matriz[u][v] == 1){
        Unir(u, v);
        return 1;
    } else {
        Matriz[u][v]--;
        Matriz[v][u]--;
        return 0;
    }
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...