Submission #1237413

#TimeUsernameProblemLanguageResultExecution timeMemory
1237413lalig777Game (IOI14_game)C++20
15 / 100
1 ms328 KiB
#include "game.h"
#include <iostream>
#include <vector>
#include <algorithm>
#include <cmath>
#include <unordered_set>
using namespace std;

vector<int>contador;
vector<int>sums;
vector<vector<bool> >puesto;
int sumtotal;
int N;

void noedge(int u, int v){
  contador[u]++;
  contador[v]++;
  sums[u]+=v;
  sums[v]+=u;
}

void siedge(int u, int v){
  //cout<<u<<' '<<v<<endl;  
  puesto[u][v]=true;
  puesto[v][u]=true;
  contador[v]++;
  contador[u]++;
  sums[v]+=u;
  sums[u]+=v;
  if (contador[v]==N-1){
    int nodo=sumtotal-sums[v]-v;
    siedge(v, nodo);
  }
  return;
}

int hasEdge (int u, int v){
  if (puesto[u][v]==true) return 1;
  noedge(u, v);
  if (contador[u]==N-1){
    int nodo=sumtotal-sums[u]-u;
    siedge(u, nodo);
  }if (contador[v]==N-1){
    int nodo=sumtotal-sums[v]-v;
    siedge(v, nodo);
  }return 0;
    
  
}

void initialize (int n){
  contador.assign(n, 1);
  sums.assign(n, 0);
  puesto.assign(n, vector<bool>(n, false));
  sumtotal=n*(n-1)/2;
  N=n;
  return;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...