Submission #223725

#TimeUsernameProblemLanguageResultExecution timeMemory
223725Ruxandra985Game (IOI14_game)C++14
0 / 100
5 ms384 KiB
#include "game.h"

int lft[1510] , total , ni , ok , put , taken[1510];

void initialize (int n){

    for (int i = 0 ; i < n ; i++)
        lft[i] = n - 1;
    ni = n;

}
int root (int x){

    while (taken[x])
        x = taken[x];
    return x;

}
int hasEdge (int u , int v){
    int aux;
    if (u > v){
        aux = u;
        u = v;
        v = aux;
    }
    total++; /// muchii care n au fost puse
    lft[u]--;
    lft[v]--;

    //if (u == 0 && v == 3)
      //  printf ("a");

    if (lft[u] == 0 && lft[v] == 0 && put == ni - 2){
        //fprintf (fout , "%d %d\n" , u , v);
        ok = 1;
        put++;
        return 1;
    }


    if ((lft[u] == 0 || lft[v] == 0) && lft[u] != lft[v] && root(u) != root(v) && put != ni - 2){
        //fprintf (fout , "%d %d\n" , u , v);
        taken[root(u)] = root(v);
        put++;
        return 1;
    }

    if (lft[u] > 0 && lft[v] > 0 && root(u) != root(v) && put != ni - 2){
        taken[root(u)] = root(v);
        //fprintf (fout , "%d %d\n" , u , v);
        put++;
        return 1;
    }

    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...