제출 #1167018

#제출 시각아이디문제언어결과실행 시간메모리
1167018HappyCapybara게임 (IOI14_game)C++17
100 / 100
275 ms15908 KiB
#include "game.h"
#include<bits/stdc++.h>
using namespace std;

int n;
vector<int> p;
vector<vector<int>> d;

int find(int a){
    if (a == p[a]) return p[a];
    return p[a] = find(p[a]);
}

void merge(int a, int b){
    a = find(a);
    b = find(b);
    p[b] = a;
    for (int i=0; i<n; i++){
        d[a][i] += d[b][i];
        d[i][a] = d[a][i];
    }
}

void initialize(int n){
    ::n = n;
    p.resize(n);
    for (int i=0; i<n; i++) p[i] = i;
    d.resize(n, vector<int>(n, 1));
    for (int i=0; i<n; i++) d[i][i] = 0;
}

int hasEdge(int u, int v){
    u = find(u);
    v = find(v);
    d[u][v]--;
    d[v][u]--;
    if (d[u][v]) return 0;
    merge(u, v);
    return 1;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...