Submission #1356430

#TimeUsernameProblemLanguageResultExecution timeMemory
1356430nataliaaGame (IOI14_game)C++20
0 / 100
0 ms344 KiB
#include "game.h"
#include<bits/stdc++.h>
using namespace std;
int a[1505][1505];
int ok[200005]={};
int sz[200005];
void build(int n, int m){
    for(int i = 0; i<=n; i++) ok[i]= i;
    for(int i = 0; i<=m; i++) sz[i] = 1;
}
int par(int v){
    if(ok[v]==v) return v;
    return ok[v] = par(ok[v]);
}
void join(int u, int v){
    u = par(u);
    v = par(v);
    
    int sz1 = sz[u],  sz2 = sz[v];
    if(sz1<sz2){
        swap(u, v);
    } 
    ok[v] = u;
    sz[u]+=sz[v];
}
void initialize(int n) {
    build(n, n);
}
int hasEdge(int u, int v) {
    u = par(u);
    v = par(v);
    if(v<u) swap(u, v);
    if(a[u][v]==0) a[u][v] = sz[u]*sz[v];
    if(a[u][v]==1){
        join(u, v);
        for(int i = 0; i<1500; i++){
            int j = par(i);
            if(j!=u) {
                a[u][j] = sz[u]*sz[j];
                a[j][u] = sz[u]*sz[j];
            }
        }
        return 1;
    } 
    a[u][v]--;
    return 0;
}
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...