제출 #489153

#제출 시각아이디문제언어결과실행 시간메모리
489153SlavicG게임 (IOI14_game)C++17
0 / 100
0 ms332 KiB
#include "bits/stdc++.h"
using namespace std;
 
#define ll long long
 
#define       forn(i,n)              for(int i=0;i<n;i++)
#define          all(v)              v.begin(), v.end()
#define         rall(v)              v.rbegin(),v.rend()
 
#define            pb                push_back
#define          sz(a)               (int)a.size()

const int N = 1600;
bool asked[N][N];
bool know[N][N];
int par[N], s[N];
int cnt[N][N];
int n;
int get(int a){
    return (a == par[a] ? a : par[a] = get(par[a]));
}
void uni(int a, int b){
    a = get(a), b = get(b);
    if(s[a] > s[b])swap(a, b);

    for(int i = 0;i < n; ++i){
        if(i == a || i == b)continue;
        cnt[i][a] += cnt[i][b];
        cnt[a][i] += cnt[b][i];
    }
    par[a] = b;
    s[b] += s[a];
}

void initialize(int N){
    n = N;
    for(int i = 0;i < n; ++i){
        s[i] = 1;
        par[i] = i;
    }
}

int hasEdge(int u, int v){
    u = get(u), v = get(v);
    if(u == v){
        return 1;
    }

    if(cnt[u][v] > 1){
        --cnt[u][v];
        --cnt[v][u];
        return 0;
    }
    uni(u, v);
    return 1;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...