Submission #1016909

#TimeUsernameProblemLanguageResultExecution timeMemory
1016909vivkostovGame (IOI14_game)C++14
100 / 100
239 ms21112 KiB
#include<bits/stdc++.h>
#define endl '\n'
#include "game.h"
using namespace std;
int br[2005][2005],n,lead[2005];
int fix_lead(int beg)
{
    if(lead[beg]==beg)return beg;
    return fix_lead(lead[beg]);
}
void merg(int v,int u)
{
    v=fix_lead(v);
    u=fix_lead(u);
    br[v][u]--;
    br[u][v]--;
    for(int i=1;i<=n;i++)
    {
        br[v][i]+=br[u][i];
        br[i][v]+=br[i][u];
        br[u][i]=0;
        br[i][u]=0;
    }
    lead[u]=v;
}
void initialize(int N)
{
    n=N;
    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=n;j++)
        {
            br[i][j]=1;
        }
        lead[i]=i;
    }
}
int hasEdge(int v,int u)
{
    v++;
    u++;
    v=fix_lead(v);
    u=fix_lead(u);
    if(br[v][u]==1)
    {
        merg(v,u);
        return 1;
    }
    else
    {
        br[v][u]--;
        br[u][v]--;
        return 0;
    }
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...