제출 #1325800

#제출 시각아이디문제언어결과실행 시간메모리
1325800cnasteaGame (IOI14_game)C++20
100 / 100
224 ms15772 KiB
#include "game.h"
#include <bits/stdc++.h>
using namespace std;
int p[1500], s[1500], e[1500][1500], n;

int f(int x){
    if(x == p[x]) return x;
    p[x] = f(p[x]);
    return p[x];
}

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

int hasEdge(int u, int v) {
    int a = f(u), b = f(v);
    if(e[a][b] < s[a]*s[b]-1) {
        e[a][b]++; e[b][a]++;
        return 0;
    }
    p[a] = b; s[b] += s[a];
    for(int i = 0; i < n; i++) if(i != a && i != b) {e[b][i] += e[a][i]; e[i][b] = e[b][i];}
    return 1;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...