제출 #1240481

#제출 시각아이디문제언어결과실행 시간메모리
1240481Jer게임 (IOI14_game)C++20
0 / 100
0 ms328 KiB
#include "game.h"
#include <bits/stdc++.h>

using namespace std;

const int MAXN = 1505;

int n, edges = 0, quest = 0;

struct unionFind
{
    int par[MAXN], size[MAXN];
    unionFind()
    {
        for (int i = 0; i < MAXN; i++)
            par[i] = i, size[i] = 1;
    }

    int find(int x)
    {
        if (x == par[x])
            return x;
        return (par[x] = find(par[x]));
    }

    bool same(int a, int b) { return find(a) == find(b); }

    void unite(int a, int b)
    {
        a = find(a), b = find(b);

        if (size[b] > size[a])
            swap(b, a);

        par[b] = a;
        size[a] += size[b];
    }
};

unionFind uf;

void initialize(int N)
{
    n = N;
}

int hasEdge(int u, int v)
{
    quest++;
    if (uf.same(u, v) or (edges == n - 2 and quest < (n * (n - 1)) / 2))
        return 0;

    edges++;
    uf.unite(u, v);
    return 1;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...