Submission #1284861

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

vector<set<int>> S;

int t = 0;

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); t += ret; assert(t<(int)S.size());
  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()].erase(a),a = *S[a].begin();
  while (S[b].size()==1) 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...