Submission #1148076

#TimeUsernameProblemLanguageResultExecution timeMemory
1148076AlgorithmWarrior게임 (IOI14_game)C++20
42 / 100
1096 ms107988 KiB
#include <bits/stdc++.h>
#include "game.h"

using namespace std;

int const MAX=1505;
set<int>vecF[MAX];
set<int>candT[MAX];
int muchie;
bool activ[MAX];

void initialize(int n){
    int i,j;
    for(i=0;i<n;++i)
        for(j=0;j<n;++j)
            if(i!=j)
                vecF[i].insert(j);
}

int hasEdge(int u, int v){
    ++muchie;
    vecF[u].erase(v);
    vecF[v].erase(u);
    if(muchie==1){
        activ[u]=activ[v]=1;
        for(auto vec : vecF[u])
            candT[vec].insert(u);
        for(auto vec : vecF[v])
            candT[vec].insert(v);
        return 1;
    }
    if(activ[u] || activ[v]){
        if(activ[v])
            swap(u,v);
        candT[v].erase(u);
        if(candT[v].empty()){
            activ[v]=1;
            for(auto vec : vecF[v])
                candT[vec].insert(v);
            return 1;
        }
    }
    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...