Submission #1284853

#TimeUsernameProblemLanguageResultExecution timeMemory
1284853DeltaStructGame (IOI14_game)C++20
15 / 100
4 ms900 KiB
#include <bits/stdc++.h>
using namespace std;
#include "game.h"

vector<set<int>> S;

void initialize(int n){
  S.assign(n,set<int>());
  for (int i(0);i < n;++i) for (int k(0);k < n;++k) if (i!=k) S[i].emplace(k);
}

int hasEdge(int a,int b){
  int ret = (S[a].size()==1||S[b].size()==1);
  if (S[a].find(b)!=S[a].end()) S[a].erase(b);
  if (S[b].find(a)!=S[b].end()) S[b].erase(a);
  while (S[a].size()==1&&S[*S[a].begin()].find(a)!=S[*S[a].begin()].end()){
    S[*S[a].begin()].erase(a),a = *S[a].begin();
  }
  while (S[b].size()==1&&S[*S[b].begin()].find(b)!=S[*S[b].begin()].end()){
    S[*S[b].begin()].erase(b),b = *S[b].begin();
  }
  return ret;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...