Submission #871517

#TimeUsernameProblemLanguageResultExecution timeMemory
871517HuyQuang_re_Zero게임 (IOI14_game)C++14
100 / 100
257 ms25940 KiB
#include <bits/stdc++.h>
#define ll long long
#define db long double
#define II pair <ll,ll>
#define III pair <ll,II>
#define IV pair <vector <int>,vector <int> >
#define TII pair <treap*,treap*>
#define fst first
#define snd second
#define BIT(x,i) ((x>>i)&1)
#define pi acos(-1)
#define to_radian(x) (x*pi/180.0)
#define to_degree(x) (x*180.0/pi)
#define Log(x) (31-__builtin_clz((int)x))
#define LogLL(x) (63-__builtin_clzll((ll)x))
#include "game.h"
using namespace std;
int n,i,u,v,r[100005],Left[1501][1501];
int root(int u) { return (u==r[u]) ? u : r[u]=root(r[u]); }
void initialize(int _n)
{
    n=_n;
    for(u=1;u<=n;u++) r[u]=u;
    for(u=1;u<=n;u++)
        for(v=1;v<=n;v++)
            if(u!=v) Left[u][v]=1;
}
int hasEdge(int u,int v)
{
    u++; v++;
    u=root(u); v=root(v);
    if(u==v) return 1;
    Left[u][v]--; Left[v][u]--;
    if(Left[u][v]==0)
    {
        r[u]=v;
        for(int x=1;x<=n;x++)
            if(r[x]==x)
            {
                Left[v][x]+=Left[u][x];
                Left[x][v]+=Left[u][x];
            }
        return 1;
    }
    else return 0;
}
/*
int main()
{
    freopen("game.inp","r",stdin);
    freopen("game.out","w",stdout);
    cin>>n;
    initialize(n);
    while(cin>>u>>v) cout<<hasEdge(u,v)<<'\n';
}
*/
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...